编写可维护软件的10大要则-低层级原则

2018-10-14  本文已影响0人  塞外的风

本篇主要总结《代码不朽 编写可维护软件的10大要则》中的低层级原则,包括如下内容:

一. 编写短小的代码单元

1. 原则:

2. 动机:

短小的代码单元易于测试、分析、重用

3. 如何使用本原则:

使用重构来实现该原则:
1. 提取方法
2. 将方法替换为方法对象

4. 本节内容总结:

有人可能会质疑代码单元的长度限制在15行以内是否可以实现需求功能。根据SIG的代码检测分析,优秀的项目1-15行代码占比甚至会高于90%。
实际上,要求项目中每个代码单元都不超过15行也不太现实,它只是我们编写代码单元时的目标。每当超过15行时,我们要停下来思考是否必须要超过15行,有何办法可以让代码单元不超过15行。你可以先完整地实现代码单元的功能,然后再停下来思考该如何重构以缩短其长度。如此以来,不仅可以提高代码的可维护性,更能大幅提高个人的编码水平。


二. 编写简单的代码单元

1. 原则:

2. 动机:

简单的代码单元易于修改、测试。

3. 如何使用本原则:

4. 本节内容总结:

代码单元简单意味着代码单元分支点少,最简单的情况就是整个代码单元顺序执行,没有多余分支。每多一个分支,理解起来相当于要多“压栈”一次,编写测试代码时就需要增加一个测试用例。
圈复杂度是代码复杂性的衡量标准,理解了圈复杂度,就理解了编写简单代码的必要性。


三. 不写重复代码

1. 原则:

重复代码的类型:

public void setPageWidthInInches(float newWidth) {
    float cmPerInch = 2.54f;
    this.pageWidthInCm = newWidth * cmPerInch;
    ...
}

public void setPageWidthInPoints(float newWidth) {
    float cmPerPoint = 0.03527f;
    this.pageWidthInCm = newWidth * cmPerPoint;
    //其他代码,同setPageWidthInInches中的一样
}

2. 动机:

3. 如何使用本原则:

具体细节可参考《重构 改善既有代码的设计》

4. 本节内容总结:

重复代码是“万恶之源”,是最大的软件质量问题,要切记不要在系统中出现重复代码。


四. 保持代码单元的接口简单

1. 原则:

2. 动机:

保持较少的接口参数并引入合适的参数对象,能够带来很多的好处。接口参数较少的方法能够保持简单的上下文,因此更容易被人理解。除此以外,由于它们并不过于依赖来自外部的输入,所以也更易于重用和修改。

3. 如何使用本原则:

4. 本节内容总结:

根据实践中的经验,将参数个数的上限设为4个是比较合理的。5个参数的方法已经开始变得难以理解,并且担负过多的职责。


五. 编写简洁的代码

1. 原则:

2. 动机:

简洁的代码是可维护的代码。

3. 如何使用本原则

SIG从长期的咨询经验中总结出如下7条规则来避免产生最不利于可维护性的代码坏味道:

4. 本节内容总结:

实际工作中会使用更多的编码规范和质量检查规范,这7个规范仅仅是SIG团队认为对编写可维护代码最重要的几条,应该严格遵守。

上一篇 下一篇

猜你喜欢

热点阅读