我试图告诉别人他的代码不是“连贯的”,因为它有多种用途。我认为我不能很好地解释它,所以我正在寻找一个很好的参考和/或定义。
答案 0 :(得分:8)
我认为正确的术语是cohesion。
在计算机编程中,cohesion衡量软件模块的各种职责的相关性和重点。内聚是一种有序的测量类型,在讨论时通常表示为“高内聚力”或“低内聚力”。
具有高内聚力的模块往往更受欢迎,因为高内聚力与软件的几个理想特征相关,包括稳健性,可靠性,可重用性和可理解性,而低内聚性与不良特性相关,例如难以维护,难以测试,难以重用,甚至难以理解。
答案 1 :(得分:4)
我的计算机(即程序员圣经)旁边有史蒂夫麦康纳尔的代码完成,页面打开解释凝聚力所以我想我会分享,
凝聚力来自结构化设计 并且通常在同一个讨论中讨论 作为耦合的背景。凝聚力指的是 如何密切所有的例程 类或例程中的所有代码 支持一个集中的目标 - 如何集中 这个班是。包含的类 强烈相关的功能 被描述为具有强大的凝聚力, 而启发式的目标是制作 凝聚力尽可能强。
答案 2 :(得分:1)
我使用术语“关注点分离”来解释重构时的问题。通常当代码是相当新的时候,事情就会被混为一谈,因为一开始并不清楚单独的问题。
向您的同事说明这一点的一个简单方法是让他们为代码编写测试用例。这应该说明代码不清晰或不连贯。
另一个好用的短语是函数/对象“应该做一件事,做得好”,这对从对象/方法名称到系统整体架构的所有内容都有影响。
答案 3 :(得分:1)
除了到目前为止给出的答案之外,一种思考高内聚性的简单方法是缺乏功能重复,并将相关功能明确分离到不同的模块,组件或类中。因此,如果您想要一个类似于另一个函数的函数,并且您剪切并粘贴并随后修改代码的副本,则会降低内聚力。如果修改原始文件以处理新案例,新案例与现有功能明显相关,则会增加内聚力。换句话说,如果你的程序必须做一个给定的事情,无论多少次或多少个地方,为了最大的凝聚力,应该只有一段代码来做那件事。同时,给定的类,模块或组件应该具有单一的责任区域。将不相关的功能集中到单个类或组件中也会降低内聚力。
正如CodeWiki所说,凝聚力通常用耦合来讨论,其中两者可以相互对立,特别是在没有仔细规划严格界面的情况下。关于凝聚力的许多google文章都与OO设计有关,但内聚和耦合不仅限于OO。
答案 4 :(得分:0)
以有序,合乎逻辑和美学一致的部分关系为标志; “一个连贯的论点” - 来自http://www.websters-online-dictionary.org/definition/coherent