代码重构培训(笔记)

  • 持续集成:保证日常流程中所有开发人员的code clean

  • 对于眼中的烂项目,如果用同样的思路去重构,只不过是一个新的烂项目的开始

  • 生成烂代码的原因,一般人都会认为有以下几种甚至更过:

    • 需求变更

    • 旧的逻辑难以维护

    • 交付压力

    • 自己的代码设计(这个是关键)

  • 烂代码产生的一个重要原因是:

    • 破窗效应 ---> 惯性 ---> 好的更好,坏的更坏

  • 死循环:无单元测试 ---> 不敢动以前代码 ---> 烂代码

    • 单元测试:保证功能细节正确

    • 测试人员:集成测试,保证产品功能正常

  • 重构 不等于 重写

    • 重构是,小步迭代,逐步验证。重写是,完全推翻重来。

  • 重构的重要原则:

    • 重构是在不改变原有代码行为的前提下,对其进行的一系列小步骤的改进。

    • 重构是baby step,也就是小步测试,逐步完成。

  • first, do no harm。重构过程,首先要做到不伤害。

  • 重构时:

    • 重要的就是要解耦(函数内、函数间等),否则很难重构。

    • 重构时,勿以善小而不为,勿以恶小而为之

  • 重构中,要充分使用工具:

    • 编程工具中 refactor 功能的使用

    • svn status

    • 持续集成,code review(代码质量的可视化)

  • 在原有代码基础上改动时,代码质量保证方法:

    • 不伤害

      • 隔离原有代码,尽量不该动原有逻辑,先保证原有代码不动,再增加新功能

      • 优先重构痛点:经常改动的复杂代码

    • 逐步验证

      • 单元测试

    • 过渡设计

  • 代码是债务:

    • 代码clean,需要从刻意到随意

  • 把数据处理封装,避免需要修改时,到处找数据的使用点进行修改,而造成 漏掉 或者 修改点过多造成工作量过大的问题。

  • public函数是流程函数,只应由各种独立功能的函数组成

  • 修改代码时,如果没有做到新旧代码隔离,代码会逐步变成各种补丁交叉,造成可读性、可维护性急剧下降

  • 写新代码时要做到:

    • 小步重构

      • 一定要用单元测试保证

      • 制定代码底限或者重构底限,依照规则review代码(用规则发现代码中坏味道)

    • code review

      • 保证 code clean,延长代码的生命周期

  • 代码隔离的四大类方法:

    • 新生方法 sprout method

    • 新生类 sprout class

      • 接口、观察者、直接加功能类

    • 外覆方法 wrapper method

    • 外覆类 wrapper class

      • 代理、装饰、aop方式

  • 单一原则

    • 单一抽象原则(SLAP),单一代码层次抽象

    • 单一原则,查询、执行分离

重构相关书籍: 《重构-改善既有代码的设计》 《程序员的职业素养》 《修改代码的艺术》

Last updated