常见代码重构技巧

目录
常见代码重构技巧
关于重构
为什么要重构
什么是重构
代码的坏味道
坏代码的问题
什么是好代码
如何重构
SOLID原则
单一职责原则
开放-关闭原则
里氏替换原则
接口隔离原则
依赖反转原则
迪米特法则
合成复用原则
设计模式
代码分层
命名规范
约定俗称的惯例
类命名
方法命名
重构技巧
提炼方法
以函数对象取代函数
引入参数对象
移除对参数的赋值
将查询与修改分离
移除不必要临时变量
引入解释性变量
使用卫语句替代嵌套条件判断
使用多态替代条件判断断
使用异常替代返回错误码
引入断言
引入Null对象或特殊对象
提炼类
组合优先于继承
接口优于抽象类
优先考虑泛型
静态成员类优于非静态成员类
优先使用模板/工具类
分离对象的创建与使用
可访问性最小化
可变性最小化
质量如何保证
测试驱动开发
TDD的开发周期
两个基本的原则
分层测试点
参考资料
常见代码重构技巧 关于重构 为什么要重构
项目在不断演进过程中,代码不停地在堆砌 。如果没有人为代码的质量负责,代码总是会往越来越混乱的方向演进 。当混乱到一定程度之后,量变引起质变,项目的维护成本已经高过重新开发一套新代码的成本,想要再去重构,已经没有人能做到了 。
造成这样的原因往往有以下几点:
编码之前缺乏有效的设计成本上的考虑,在原功能堆砌式编程缺乏有效代码质量监督机制
对于此类问题,业界已有有很好的解决思路:通过持续不断的重构将代码中的“坏味道”清除掉 。
什么是重构
重构一书的作者 对重构的定义:
重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本 。
重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构 。
根据重构的规模可以大致分为大型重构和小型重构:
大型重构:对顶层代码设计的重构,包括:系统、模块、代码结构、类与类之间的关系等的重构,重构的手段有:分层、模块化、解耦、抽象可复用组件等等 。这类重构的工具就是我们学习过的那些设计思想、原则和模式 。这类重构涉及的代码改动会比较多,影响面会比较大,所以难度也较大,耗时会比较长,引入bug的风险也会相对比较大 。
小型重构:对代码细节的重构,主要是针对类、函数、变量等代码级别的重构,比如规范命名和注释、消除超大类或函数、提取重复代码等等 。小型重构更多的是使用统一的编码规范 。这类重构要修改的地方比较集中,比较简单,可操作性较强,耗时会比较短,引入bug的风险相对来说也会比较小 。什么时候重构 新功能开发、修bug或者代码中出现“代码坏味道”,我们就应该及时进行重构 。持续在日常开发中进行小重构,能够降低重构和测试的成本 。
代码的坏味道
方法过长 过大的类 逻辑分散 严重的情结依恋 数据泥团/基本类型偏执 不合理的继承体系 过多的条件判断过长的参数列临时变量过多令人迷惑的暂时字段 纯数据类 不恰当的命名 过多的注释 坏代码的问题 难于变化 难于理解 难以测试什么是好代码
代码质量的评价有很强的主观性,描述代码质量的词汇也有很多,比如可读性、可维护性、灵活、优雅、简洁 。这些词汇是从不同的维度去评价代码质量的 。其中,可维护性、可读性、可扩展性又是提到最多的、最重要的三个评价标准 。