1、代码品质评估规范
-
可维护性(maintainability)
“代码易保护”就是指,在不毁坏原有代码设计、不引入新的 bug 的状况下,可能疾速地批改或者增加代码。
“代码不易保护”就是指,批改或者增加代码须要冒着极大的引入新 bug 的危险,并且须要破费很长的工夫能力实现。
-
可读性(readability)
任何傻瓜都会编写计算机能了解的代码。好的程序员可能编写人可能了解的代码。
-
可扩展性(extensibility)
代码的可扩展性示意,咱们在不批改或大量批改原有代码的状况下,通过扩大的形式增加新的性能代码。
-
灵活性(flexibility)
如果一段代码易扩大、易复用或者易用,咱们都能够称这段代码写得比拟灵便。
-
简洁性(simplicity)
尽量放弃代码简略。代码简略、逻辑清晰,也就意味着易读、易保护。咱们在编写代码的时候,往往也会把简略、清晰放到首位。
-
可复用性(reusability)
尽量减少反复代码的编写,复用已有的代码。
-
可测试性(testability)
代码可测试性的好坏,能从侧面上十分精确地反馈代码品质的好坏。代码的可测试性差,比拟难写单元测试,那基本上就能阐明代码设计得有问题。
其中比拟罕用的三个规范是:可维护性、可读性、可扩展性。
2、设计准则
-
SRP 繁多职责准则
一个类或者模块只负责实现一个职责(或者性能)
-
OCP 开闭准则
软件实体(模块、类、办法等)应该“对扩大凋谢、对批改敞开”。
-
LSP 里式替换准则
- 子类对象(object of subtype/derived class)可能替换程序(program)中父类对象(object of base/parent class)呈现的任何中央,并且保障原来程序的逻辑行为(behavior)不变及正确性不被毁坏。
- 子类在设计的时候,要恪守父类的行为约定(或者叫协定)。父类定义了函数的行为约定,那子类能够扭转函数的外部实现逻辑,但不能扭转函数原有的行为约定。这里的行为约定包含:函数申明要实现的性能;对输出、输入、异样的约定;甚至包含正文中所列举的任何非凡阐明。
-
ISP 接口隔离准则
客户端不应该被强制依赖它不须要的接口。其中的“客户端”,能够了解为接口的调用者或者使用者。
-
DIP 依赖倒置准则
高层模块(high-level modules)不要依赖低层模块(low-level)。高层模块和低层模块应该通过形象(abstractions)来相互依赖。除此之外,形象(abstractions)不要依赖具体实现细节(details),具体实现细节(details)依赖形象(abstractions)。
-
DRY 准则、KISS 准则、YAGNI 准则、LOD 法令
-
DRY
不要写反复的代码。
-
KISS
尽量放弃简略
-
YAGNI
不要去设计以后用不到的性能;不要去编写以后用不到的代码。核心思想就是:不要做适度设计。
-
LOD
不该有间接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口。
-