一次代码重构记录
2013-12-13 10:19
337 查看
先说前言:
最近在做一个预警的功能。其中包含两个表,一个预警主表,一个该预警对应岗位的子表,这两个表是一对多的关系。
现在要做的这个功能是要新增一个预警。
新增预警时,要对主表插入一条记录,对子表插入多条记录。主表的主键是预警GUID,子表是双主键,预警GUID+岗位GUID。
好,那么进入正题,这个功能实现起来不难。 第一次写完之后,我把对这两个表的数据插入和简单的校验都放在一个方法中。
其中,我觉得子表的数据集合的实体类生成方法,即预警岗位的实体类集合,可以写入一个方法里,就将其抽离成一个方法。
第一次实现的代码如下所示:
AddWarning方法
--------------------------------------------------------------------------------------------------------------
在数数行数,主方法的行数已经降到19行。这次我总算是满意了,也没有再抽方法的冲动,好了,这个方法完工。
其中各抽出来的方法中,只有AddWarning方法要接近40行。其他都是20左右。
总结一下,这个主方法从接近70行减少到19行。对这个结果我自己就不做什么评论了。
欢迎大家回复关于重构、优化、精简代码的建议。 对于我的重构,觉得不对的地方也欢迎指正。
最近在做一个预警的功能。其中包含两个表,一个预警主表,一个该预警对应岗位的子表,这两个表是一对多的关系。
现在要做的这个功能是要新增一个预警。
新增预警时,要对主表插入一条记录,对子表插入多条记录。主表的主键是预警GUID,子表是双主键,预警GUID+岗位GUID。
好,那么进入正题,这个功能实现起来不难。 第一次写完之后,我把对这两个表的数据插入和简单的校验都放在一个方法中。
其中,我觉得子表的数据集合的实体类生成方法,即预警岗位的实体类集合,可以写入一个方法里,就将其抽离成一个方法。
第一次实现的代码如下所示:
internal void AddWarning(CTPenetrateLowcostWarning warning, List<CTPenetrateLowcostWarningStation> warningStations) { if (warning == null || warningStations == null || warningStations.Count == 0) { return; } var isSuccess = true; var plasView = new CTPenetrateLowcostWarningStationView(); using (DbTransaction trans = this.BeginTransaction()) { try { isSuccess = isSuccess && this.Insert(warning, trans); foreach (var station in warningStations) { isSuccess = isSuccess && plasView.Insert(station, trans); if (!isSuccess) { break; } } if (isSuccess) { isSuccess = isSuccess && this.CommitTransaction(trans); } else { this.CloseTransaction(trans); } } catch (Exception) { this.CloseTransaction(trans); } } }
AddWarning方法
--------------------------------------------------------------------------------------------------------------
在数数行数,主方法的行数已经降到19行。这次我总算是满意了,也没有再抽方法的冲动,好了,这个方法完工。
其中各抽出来的方法中,只有AddWarning方法要接近40行。其他都是20左右。
总结一下,这个主方法从接近70行减少到19行。对这个结果我自己就不做什么评论了。
欢迎大家回复关于重构、优化、精简代码的建议。 对于我的重构,觉得不对的地方也欢迎指正。
相关文章推荐
- 记录一次代码重构的思路(初稿)
- 一次代码重构记录
- 重构一次后的EasyJWeb Tools辅助代码生成引擎功能及源码
- 记录一次曲折的维护-重构过程
- 重构一次后的EasyJWeb Tools辅助代码生成引擎功能及源码
- 记录一次事故,svn代码更新后,Tomcat7启动报警告,访问页面404
- 程序员如何才能提高自己?通过一次重构代码讲解自己的感受【有代码比较】
- 重构一次后的EasyJWeb Tools辅助代码生成引擎功能及源码
- 精练代码:一次Java函数式编程的重构之旅
- 记一次高并发情况,服务器和代码修改过程记录。
- 重构一次后的EasyJWeb Tools辅助代码生成引擎功能及源码
- Comamnd模式和Factory模式在一次代码重构中的应用
- 重构一次后的EasyJWeb Tools辅助代码生成引擎功能及源码
- Comamnd模式和Factory模式在一次代码重构中的应用
- 一次代码重构之旅---Java读取Excel(一)
- 脚印:记录一次重构,将规则生产和规则消费(执行委托)分离
- 重构一次后的EasyJWeb Tools辅助代码生成引擎功能及源码
- 程序员如何才能提高自己?通过一次重构代码讲解自己的感受【有代码比较】
- 重构一次后的EasyJWeb Tools辅助代码生成引擎功能及源码
- 重构一次后的EasyJWeb Tools辅助代码生成引擎功能及源码