高质量代码优化!谈谈重构项目中if-else代码的几点建议

switch

  • if - else只适合在3层以内使用
  • 当条件判断较多时,能够首先考虑使用switch

interface

  • 当判断条件还可能动态增长时,能够考虑将switch进一步优化,引入接口interface,将代码与数据分离:
    • 建立一个map:
      • key: switch的case值
      • value: 对应的实体类
    • 抽象出通用方法,变成一个接口,统一入参和返回值
    • 主实现类controller类就是将type值传进去,获取到对应的实现类,而后调用抽象出来的方法,这样不管增长多少个case, 都不会改变主逻辑代码
    • 每一个类单独实现接口,互不影响

db setting

  • db setting表的方式加载type对应的实体类
  • 这样作到了配置数据化
  • 若是case中的实现类须要动态变化呢?
  • 解决方案:case的实现用动态语言完成,而且将代码写在db
    • db里保存的是代码
    • 启动的时候初始化全部的实现类,以节省时间
    • 主实现类controller类里主逻辑代码不变,但额外提供一个初始化map的方法
    • 若是须要新增的case和实现类,修改db,调用更新map的方法,从新初始化(甚至能够写一个后台编辑脚本发布的功能)

总结

  • 架构设计和需求相关,不只要会技术,还必须懂行业,要知道需求在可见的时间里会变化到什么程度,而后根据不一样的程度来给出不一样的方案
  • 不要过分设计:
    • 有方案不表明当前必须作,能把设计提早比需求快一步,就很好了
  • 学会给本身的代码分级,是让本身进步的最好的办法.一我的的成长分为几个阶段:
    • 面向功能编程
    • 面向性能编程
    • 面向复用编程
    • 面向将来编程
相关文章
相关标签/搜索