一、为什么要监测循环、包耦合度情况?
耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准。
耦合度很高的情况下,维护代码时修改一个地方会牵连到很多地方,如果修改时没有理清这些耦合关系,那么带来的后果可能会是灾难性的,特别是对于需求变化较多以及多人协作开发维护的项目,修改一个地方会引起本来已经运行稳定的模块错误,严重时会导致恶性循环,问题永远改不完,开发和测试都在各种问题之间奔波劳累,最后导致项目延期,用户满意度降低,成本增加
有两个测试指标有助于确定过度耦合的情况,即“传入耦合”(这个对象对其他对象负有责任)与“传出耦合”(这个对象依赖于其他对象);
高度依赖于其他对象的对象在面对变化时显得很脆弱,传入耦合与传出耦合共同组成了“不稳定性”值。
不稳定性 = 传出耦合 / (传出耦合 + 传入耦合)
另外,了解耦合度情况将可以对可维护性产生较大影响,具有高传入耦合的配件应该有大量的相关测试,因为许多代码依赖于这个配件,因此就更希望保证它是可靠的,可有效用于评估与降低软件风险。
二、如何监测循环、包耦合度情况
How to Hunt for Cycles?
如何寻找循环呢?在SonarQube中,在面板中增加相应的widget插件即可