阿里P8架构师教你kill祖传石山代码重复/大量ifelse( 四 )
如果原始的DTO有100个字段 , 我们需要复制90个字段到DO中 , 保留10个不赋值 , 最后应该如何校验正确性呢?
- 数数吗?即使数出有90行代码 , 也不一定正确 , 因为属性可能重复赋值
- 有时字段名相近 , 比如complainable和commentable , 容易搞反
- 对两个目标字段重复赋值相同的来源字段
- 明明要把DTO的值赋值到DO中 , 却在set的时候从DO自己取值 , 导致赋值无效
文章插图
5 总结重复代码多了总有一天会出错 。
- 有多个并行的类实现相似的代码逻辑 考虑提取相同逻辑在父类中实现 , 差异逻辑通过抽象方法留给子类实现 。 使用类似的模板方法把相同的流程和逻辑固定成模板 , 保留差异的同时尽可能避免代码重复 。 同时 , 可以使用Spring的IoC特性注入相应的子类 , 来避免实例化子类时的大量if…else代码 。
- 使用硬编码的方式重复实现相同的数据处理算法 考虑把规则转换为自定义注解 , 作为元数据对类或对字段、方法进行描述 , 然后通过反射动态读取这些元数据、字段或调用方法 , 实现规则参数和规则定义的分离 。 也就是说 , 把变化的部分也就是规则的参数放入注解 , 规则的定义统一处理 。
- 业务代码中常见的DO、DTO、VO转换时大量字段的手动赋值 , 遇到有上百个属性的复杂类型 , 非常非常容易出错 不要手动进行赋值 , 考虑使用Bean映射工具进行 。 此外 , 还可以考虑采用单元测试对所有字段进行赋值正确性校验 。
参考
- 《重构》
- 搞定代码重复的三个绝招
- 王兴称美团优选目前重点是建设核心能力;苏宁旗下云网万店融资60亿元;阿里小米拟增资居然之家|8点1氪 | 美团
- 注册|阿里申请注册“爆改吧!小店”商标,打造线下特色实体小店
- 耽误|被阿里耽误的虾米的一生
- 租赁物业|居然之家(000785)牵手阿里与小米
- IT|信服云为IT基础架构演进提供新思路
- 上市公司|数字化新外贸成为企业巨头新选择 近百家上市公司入驻阿里国际站
- 字节|阿里巴巴、字节跳动、花生日记获“互联网行业公益奖”
- 青山湖|阿里人均年薪百万?95后阿里单身狗陪跑摇号近2年 连青山湖都抛弃他?
- 告诉|阿里大佬告诉你如何一分钟利用Python在家告别会员看电影
- 电商|又一家电商平台倒下惨遭阿里抛弃,负债23亿进入破产重组