欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

易于维护:确保你的产品长期可持续改进的关键

最编程 2024-07-23 09:47:56
...

Name

    Maintainability 可维护性

    Extensibility 可扩展性

    Flexibility 灵活性

    Adaptability 可适应性

    Manageability 可管理性

    Supportability 支持性


常见指标

Cyclomatic Complexity 圈复杂度

    the number of different code paths in the flow of the program.

代码运行过程中可能出现的分支数量.分支数量越多代表可能走出的运行路径越多,代表需要更多的测试才能达到很好的代码覆盖率,也就以为着更差的可维护性.

Lines of Code 代码行数

更高的代码行数说明这个方法做了太多工作,应该将它分开,以便于更好的维护.

Maintainability Index (MI) 可维护性指数

– Halstead Volume (HV)

– Cyclomatic Complexity (CC)

– The average number of lines of code per module (LOC)

– The percentage of comment lines per module (COM).

值越高就更好维护.

Depth of Inheritance 继承的层次数

值越低越好维护.

Class Coupling 类之间的耦合度

Unit test coverage单元测试的覆盖度

值越高越好

聚合度和耦合度

耦合性可以是低耦合性(或称为松散耦合),也可以是高耦合性(或称为紧密耦合)。以下列出一些耦合性的分类,从高到低依序排列:

内容耦合(content coupling,耦合度最高)

也称为病态耦合(pathological coupling)当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。

共用耦合/公共耦合(common coupling)

也称为全局耦合(global coupling.)指通过一个公共数据环境相互作用的那些模块间的耦合。公共耦合的复杂程序随耦合模块的个数增加而增加。

外部耦合(external coupling)

发生在二个模块共用一个外加的数据格式、通信协议或是设备界面,基本上和模块和外部工具及设备的沟通有关。

控制耦合(control coupling)

指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能;

特征耦合/标记耦合(stamp coupling)

也称为数据结构耦合,是指几个模块共享一个复杂的数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址;

数据耦合/数据耦合(data coupling)

是指模块借由传入值共享数据,每一个数据都是最基本的数据,而且只分享这些数据(例如传递一个整数给计算平方根的函数)。

消息耦合(message coupling,是无耦合之外,耦合度最低的耦合)

可以借由以下二个方式达成:状态的去中心化(例如在对象中),组件间利用传入值或消息传递 (计算机科学)来通信。

无耦合:模块完全不和其他模块交换信息。

耦合度:对象之间的依赖程度.越低越好.

聚合度:对象内部的联系的紧密程度.越高越好.

SOLID


SOLID

SRP

不应该有多于1个原因让你的ADT发生变化,否则就拆分开


OCP

对扩展性的开放

对修改的封闭

关键技术:抽象技术

LSP

子类型必须能够替换其基类型

派生类必须 能够通过其基类的接口使用,客户端无需了解二者之间的差异

ISP

不能强迫客户端依赖于它们 不需要的接口:只提供必需的接口

将接口细分开来,让客户端只需要访问他们需要的接口,而不是访问一个“胖”接口去为很多不使用的功能浪费资源.

DIP

抽象的模块不应依赖于具体的模块

具体应依赖于抽象

delegation时应该通过接口建立联系,而不是具体子类



设计模式有较为形象的比喻,详情转见:可维护性中的设计模式

推荐阅读