码迷,mamicode.com
首页 > 其他好文 > 详细

模块与联系的度量(职责与协作的度量):内聚与耦合

时间:2018-12-26 20:15:56      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:direct   rds   The   word   overflow   nes   work   grid   can   

In computer programmingcohesion refers to the degree to which the elements inside a module belong together.[1] In one sense, it is a measure of the strength of relationship between the methods and data of a class and some unifying purpose or concept served by that class. In another sense, it is a measure of the strength of relationship between the class’s methods and data themselves.

https://en.wikipedia.org/wiki/Cohesion_(computer_science)

 

Coupling = interaction / relationship between two modules... Cohesion = interaction between two elements within a module.

Cohesion is an indication of the relative functional strength of a module.

 

Cohesion in software engineering is the degree to which the elements of a certain module belong together. Thus, it is a measure of how strongly related each piece of functionality expressed by the source code of a software module is.

Coupling in simple words, is how much one component (again, imagine a class, although not necessarily) knows about the inner workings or inner elements of another one, i.e. how much knowledge it has of the other component.

 

Cohesion is the indication of the relationship within a module.

Coupling is the indication of the relationships between modules.

技术分享图片

Cohesion

  • Cohesion is the indication of the relationship within module.
  • Cohesion shows the module’s relative functional strength. 
  • Cohesion is a degree (quality) to which a component / module focuses on the single thing. 
  • While designing you should strive for high cohesion i.e. a cohesive component/ module focus on a single task (i.e., single-mindedness) with little interaction with other modules of the system.
  • Cohesion is the kind of natural extension of data hiding for example, class having all members visible with a package having default visibility. Cohesion is Intra – Module Concept.

Coupling

  • Coupling is the indication of the relationships between modules.
  • Coupling shows the relative independence among the modules.
  • Coupling is a degree to which a component / module is connected to the other modules.
  • While designing you should strive for low coupling i.e. dependency between modules should be less
  • Making private fields, private methods and non public classes provides loose coupling.
  • Coupling is Inter -Module Concept.

check this link

https://stackoverflow.com/questions/3085285/difference-between-cohesion-and-coupling

 

simply, Cohesion represents the degree to which a part of a code base forms a logically single, atomic unitCoupling, on the other hand, represents the degree to which a single unit is independent from others. In other words, it is the number of connections between two or more units. The fewer the number, the lower the coupling.

In essence, high cohesion means keeping parts of a code base that are related to each other in a single place. Low coupling, at the same time, is about separating unrelated parts of the code base as much as possible. 

Types of code from a cohesion and coupling perspective:

Ideal is the code that follows the guideline. It is loosely coupled and highly cohesive. We can illustrate such code with this picture: 技术分享图片

God Object is a result of introducing high cohesion and high coupling. It is an anti-pattern and basically stands for a single piece of code that does all the work at once: 技术分享图片poorly selected takes place when the boundaries between different classes or modules are selected poorly技术分享图片

Destructive decoupling is the most interesting one. It sometimes occurs when a programmer tries to decouple a code base so much that the code completely loses its focus:技术分享图片

read more here

 https://stackoverflow.com/questions/3085285/difference-between-cohesion-and-coupling

模块与联系的度量(职责与协作的度量):内聚与耦合

标签:direct   rds   The   word   overflow   nes   work   grid   can   

原文地址:https://www.cnblogs.com/feng9exe/p/10180798.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!