zoukankan      html  css  js  c++  java
  • 模块与联系的度量(职责与协作的度量):内聚与耦合

    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
  • 相关阅读:
    flask url_for后没有带端口号
    [Flask]通过render_form快捷渲染表单
    [Flask]使用sqlite数据库
    jmeter参数化读取数据进行多次运行
    eclipse 集成jdk
    创建一个gradle项目
    gradle的安装
    springmvc--jsp页面乱码
    APP专项测试使用到的工具
    robotframework实战三--自定义关键字
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10180798.html
Copyright © 2011-2022 走看看