第四章知识清单:
1. 代码可规范/可读性2. 编码规范
1.代码的可规范性/可读性:
一个程序员大部分时间都是用来阅读并修改已有的代码,所以代码的可读性非常重要!
其中主要包括
- 标识符(类名、变量名、方法名)的长度。
度量方式:所有标识符的平均长度 - 明明独特性的比率(Name Uniqueness Ratio)UNIQ
- 代码复杂度:要避免多层嵌套,因为会增加复杂度(然而大多数情况也必须用)
- 代码最大行数、文件的最大Loc、代码行数
- 注释密度百分比:注释越多阅读和理解越容易。
- 代码的布局:缩进、空行、对齐、分块等
- 文件和包的组织
值得一提的是,代码的可读性/可理解性很多时候比效率/性能更加的重要,不可读不可理解代码可能蕴含更多的错误,所以要先写出可读易懂的代码,然后再去逐渐调优。
2.编码规范
eg:java中的代码规范:
选择和中编码风格是程序员个人的自由,但也要做到以下两点:
- 在所有地方保持一致的风格
- 遵从团队的统一编码风格
代码规范主要注意一下几个方面:
- 命名(Naming):java中主要采用驼峰命名法。
- 空行中的垂直布局:
- 横向化布局:空格
- 横向格式:缩进、换行
- 文件组织:
在源文件中应该按照以下顺序:
1. 包或文件级别的注释。
2. 包和导入的说明。
3. public的类和接口声明
4. private的类和接口的声明
导入包也应该按照以下顺序:
1. java标准包
2. 第三方包
3. 自定义的包
类部分应按照以下顺序:
1. javadoc注释
2. 类声明的说明
3. 整个类的注释
4. 类静态变量声明
5. 类示例变量声明
6. 函数声明(构造方法优先)
包文件中的原则:
- 复用/发布等价原则(REP):
复用的粒度等价于发布的粒度。 - 共同封闭原则(CCP)
一个包中的所有类针对同一个变化是封闭的;一个包的变化将会影响包里所有的类,而不会影响到其他包,如果两个类紧密耦合在一起,即二者总是同时变化,那么他们就应属于同一个包。 - 共同复用原则(CRP)
一个包里所有的类应被一起复用;如果复用了其中一个类,那么就应复用所有的类。
包耦合原则:
- 无圈依赖原则(ADT):不允许在包依赖图中出现任何回路,无圈将容易进行测试、维护与理解,若存在回路依赖,很难预测该包的变化将会如何影响到其他包。
消除圈主要有两种方式:
1. 创建新包
2. 利用DIP(依赖倒置原则)和ISP(接口隔离原则) - 稳定依赖原则(SDP):
包之间依赖关系只能指向稳定的方向,被依赖者更稳定于依赖者;稳定的包较难发生该边,如果不稳定的包却被很多其他的包依赖,会导致潜在的问题。 - 稳定抽象原则(SDP)
在稳定性与抽象度之间建立关联;一个包是稳定的,那么他就应该是尽可能抽象的;一个完全稳定的包中只应包含抽象类;不稳定的包应是具体的,以便于容易的进行修改。
SAP和SDP共构成了包之间的“依赖倒置原则DIP”;SDP:依赖应指向稳定的方向,SAP:稳定性隐含着抽象;因为,依赖应指向抽象的方向。