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


    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.

    enter image description here

    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: enter image description here

    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: enter image description herepoorly selected takes place when the boundaries between different classes or modules are selected poorlyenter image description here

    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:enter image description here

    read more here

     https://stackoverflow.com/questions/3085285/difference-between-cohesion-and-coupling
  • 相关阅读:
    [Git & GitHub] 利用Git Bash进行第一次提交文件
    Linux下 Unison 实现文件双向同步
    Linux SSH使用公钥私钥实现免登陆
    SSH自动断开连接的原因
    hosts.deny 和hosts.allow 配置不生效
    bind启动时提示953端口被使用
    Linux查询系统配置常用命令
    Linux 查硬件配置
    BIND rndc—使用说明
    rndc 错误解决 和 远程配置
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10180798.html
Copyright © 2020-2023  润新知