》》可维护性的常见度量指标:
1.圈复杂度CC:度量代码的结构复杂度 CC=e-n+2 (e是流程图中边的数量,n是流程图中节点数量)
2.代码行数
3.Halstead Volume:基于源代码中(不同)运算符和操作数的数量的合成度量。
4.可维护性指数(MI):计算介于0和100之间的索引值,表示维护代码的相对容易性。 高价值意味着更好的可维护性。
5.继承的层次数:表示扩展到类层次结构的根的类定义的数量。 等级越深,就越难理解特定方法和字段在何处被定义或重新定义。
6.类之间的耦合度:通过参数,局部变量,返回类型,方法调用,泛型或模板实例化,基类,接口实现,在外部类型上定义的字段和属性修饰来测量耦合到唯一类。好的软件拥有高内聚低耦合的特点
7.单元测试覆盖率:指示代码库的哪些部分被自动化单元测试覆盖
》》模块化编程:
聚合度:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
耦合度:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合
》》面向对象设计原则SOLID
(SRP) The Single Responsibility Principle 单一责任原则
(OCP) The Open-Closed Principle 开放-封闭原则
(LSP) The Liskov Substitution Principle Liskov替换原则
(DIP) The Dependency Inversion Principle 依赖转置原则
(ISP) The Interface Segregation Principle 接口聚合原则
SRP:一个类应该只负责一个功能或者叫做责任。最简单的一个原则,也是最难的一个原则
下面是一个SRP反例
OCP:对于扩展的开放性,模块的行为应该是可扩展的;对于修改的封闭性,模块自身代码不应该是被修改的
在实现其他类似功能时,我们只能扩展新的类型,而不是在原有基础上修改
LSP:子类型必须能够替换其父类型
ISP:客户端不应该依赖他们不需要的方法,一个比较大的接口应该分解成为多个小的接口
DIP:抽象的模块不应依赖具体的模块,具体的模块应该依赖于抽象的模块
高层模块不要依赖低层模块。
》》针对可维护性的设计模式
···
》》正则表达式
规则:
使用方法举例:
java中两个反斜杠表示转义 \\"表示"