重构:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本
1. 重构原则
- 重构应该随时随地进行,而不是专门安排时间进行重构
- 添加功能时重构
- 修补错误时重构
- 复审代码时重构
2. 代码的坏味道
学会判断一个类有多少实例变量算是太大,一个函数内有多少行代码才算太长
- 当在多个地方coding同样的代码时,应该及时抽离成函数,然后进行调用
- 当一行或者多行代码无法直接看出其含义时,应该抽成一个函数,并对这段代码的工作进行合理的命名
- 当类太大时,应该及时的把类中的函数、字段等按照各个职责、行为等进行抽离
- 如果一个函数的参数列太长了,应该构建一个类进行保存并作为参数传递
- 尽量使一个对象只由一种变化而引起变化。比如说一个类,类中包含金额字段,可以在类中增加方法对这个金额进行加减,而不是通过set方法进行直接赋值。
- 返回的场景,以null对象代替null值,避免出现空指针异常。然后在具体的业务逻辑中,在无法获取到对应的值时,再中断流程或跳出本次循环。
- 当有一部分麻烦的代码,想通过注释进行解释时,可以考虑先重构这一块,把各个代码段以函数代替,并在名称中按照动作和行为取名,看看是否能取代注释。
3. 构建测试体系
- 确保所有的测试都是完全自动化的,让程序检查自己的结果。
- 当如果有改动时,只需要运行测试程序,就能检查代码是否存在问题。如果有业务的改动,则需要把测试程序一起修改掉。
- 当遇到一个bug时,应该及时的编写一个单元测试来检查,并在修改后重复运行测试程序,检查是否正确。
- 尽量多考虑边界情况,因为边界值比普通的case更容易出现问题
4. 重构列表
- 构建一个重构的记录表,并且在里面写上名称、动机、做法以及对应的范例。