如同Martin Fowler所说,
代码是主要是写给人看的,其次才是给机器看的. 换句说,如果你的代码别人看不懂,就是你的水平差,不是别人水平差.
保证代码架构清晰, 是保证项目长远发展的基石. 在重构代码必须注意,重构不改变软件的功能. (重构不应增加功能或是Fix bug)
代码重构的步骤
- 建立测试实例和日志系统
- 删除不用代码
- 改变变量名称, 函数名称,类名称
- 消除函数内部不需要的临时变量
- 通过各种编程技巧,改变代码段的复杂性. 如continue, break来减少嵌套层数
- 提取相同代码
- 提取复杂代码
- 重新review现有类的private, public, protect, 将函数功能放到正确的类下.
- 尽量加上const
- 建立新类, 这是在上一步, 提取了复杂代码上的进一步改进, 很多复杂代码无法/很难单独提取为一个函数.
- 建立新继承体系
- 分解现有复杂类, 在分解前,必须建立一张现有架构的类图,如能有时序图更好.
- class抽象为模板类
- 分解现有复杂继承体系
以上步骤, 1-7步不需要采用面向对象技术, 8-10步可以采取基本面向对象技术, 11-14步需要采取设计模式,架构设计等高级技能.
以上每一小条都可以扩展很多,根据开发人员水平的不一样,侧重点不一样.
我曾经将一个15000行的类,分解成5000行的继承体系,功能不减,修改灵活性大大增加.
Martin Fowler提到了代码的坏味道. 但是这些坏味道是如何产生的,或是哪些编程的坏习惯我们应该避免团队里出现呢?
1. 拷贝,黏贴式编程
2. 随心所欲的调用 (包括逻辑和数据)
3. 从来不重审原来的代码,能用就行
其根本还是能力的问题和态度的问题, 我们必须通过技术和管理手段来帮助团队克服.
根据我的开发和管理经验,有一些独到的方法来帮助达到.