关于横切关注点和面向方面的编程,您经常会看到关于代码纠缠不清的文章。本文将1代码关联为:
软件系统中的模块可以同时与多个需求交互。例如,开发人员经常同时考虑业务逻辑、性能、同步、日志记录和安全性。如此众多的需求导致每个关注点的实现同时出现元素,导致代码混乱。
这不就是低凝聚力吗?高纠结和低衔接之间有什么区别吗?还是这两个不同的词描述了相同的事物?
发布于 2012-07-10 14:25:21
维基百科:
如果一个关注点的代码与实现其他关注点的代码混合在一起,那么它的实现就是混合的。发生纠结的模块是不连贯的。
如果降低了的内聚力
- The functionalities embedded in a class, accessed through its methods, have little in common.
- Methods carry out many varied activities, often using coarsely-grained or unrelated sets of data.所以..。当代码被纠缠在一起时,它会违反坚实的原则,如单一责任原则、开放封闭原则等。
所有这些原则最常同时发生,违反一项原则/最佳做法导致另一项原则/最佳做法。
但纠缠并不一定意味着代码没有凝聚力,例如,我们可以有一个名为SecurityChecker的类,它可以对用户日志所有与身份验证相关的活动进行身份验证。显然,这将处理多个问题,即身份验证和日志记录。在这里,这将是一个混乱的阶级。另一方面,这两个会议将操作相同的数据集,在这种情况下,可以是用户数据,登录次数,登录次数等。因此,凝聚力可能仍然很高。
这些原则/指导方针/最佳实践中的大多数从不同的角度来看待相同的问题,最终目标是管理不同组件/类之间的依赖关系等,以便在长期运行的中总体设计更加可维护、高效和优雅。
发布于 2012-07-10 13:05:10
非常相似是的。
Cohesion is used to indicate the degree to which a class has a single, well-focused purpose.因此,如果你有一个目标明确的类,那么它就不会因为做多件事情而“纠缠”了。
https://stackoverflow.com/questions/11413836
复制相似问题