什么是高内聚,低耦合?

1.什么是高内聚,低耦合?

可以用简单的两句话来形容这两个词儿:
高内聚:躲进小楼成一统;
低耦合:各人自扫门前雪(牵一发而动全身)。

 

2.这是软件工程中的概念
首先要知道一个软件是由多个子程序组装而成,
而一个程序由多个模块(方法)构成!
而内聚就是指程序内的各个模块之间关系的紧密程度,    

耦合是指各个外部程序(子程序)之间关系的紧密程度.     

所以很容易明白,为什么要高内聚?模块之间的关系越紧密,出错就越少!

低耦合?子程序间的关系越复杂,就会产生更多的意想不到的错误!会给以后的维护工作带来很多麻烦!

// 注释:“内紧而外松”

内紧:程序内的模块之间要紧密相关,形成一个高效的功能单元;(旨在—创建高效的代码)

外松:程序之间呢,要尽可能的不关联,各自实现各自的功能。(旨在—实现分工)


3.     程序开发到高级阶段就是一个大工程,从头到尾由一个人实现是不可能的,于是就要分工模块化完成。即使是由一人完成的程序,内部按照MVC模式的话,也会由subroutine来完成各项功能。于是,对于模块化的开发,就有了这样的要求:高内聚低耦合。     // subroutine:子程序

        如何理解这么晦涩的词儿呢?我们可以反过来看,如果不满足这个条件的程序会出现什么情况。低内聚的程序,就是“东一榔头西一棒棰”,想要用一个变量就当即定义一个变量。用完的变量也不清空,使用之前也不初始化。让人觉得零件落了一地;高耦合的程序,则“牵一发则动全身”。如果修改了某一个模块的接口,其他相关的模块都要从头重新测试。即使以前测试通过的,也受其改动的影响,要重新测试。由此会造成测试不完全而噩梦连连。做到这2点,对于OO的程序非常重要。各个模块,各司其职,将其功能在模块内,发挥之极;而在模块外,其他模块不用关心它是如何做到的,只要关心拿到的数据是满足自己需要的格式就可以了。这样即使以后修改起来,也知道在哪儿修改,怎么修改。修改了以后,造成的影响,以及可以控制和预知测试的范围。

参考:http://2he5.com/2008/04/03/%E8%BE%BE%E4%BA%BA%E5%BC%80%E8%AF%BE%E4%B9%8Babap-tips3%EF%BC%9A%E9%AB%98%E5%86%85%E8%81%9A%E4%BD%8E%E8%80%A6%E5%90%88/print/

高内聚低耦合是软件工程中模块化设计的核心原则之一,用于指导如何合理地划分软件模块,以提高系统的可维护性、可读性和可扩展性。 - **高内聚(High Cohesion)**:指一个模块内部各个元素(如函数、数据等)彼此相关且共同完成一个明确的功能。模块只做一件事,并且做得完整。例如,一个“用户登录验证”模块应集中处理与登录相关的所有逻辑,而不混杂注册或权限分配功能。 - **低耦合(Low Coupling)**:指模块之间尽可能减少依赖关系,交互仅通过清晰定义的接口进行,避免直接访问对方的内部数据或过多调用。例如,模块A调用模块B时,不应了解模块B的具体实现细节。 ### 在模块划分中的作用: 1. **提升可维护性**:当模块功能单一且独立时,修改一个模块不易影响其他部分。 2. **增强可重用性**:高内聚的模块功能明确,更容易在不同系统中复用。 3. **降低复杂度**:低耦合减少了模块间的相互依赖,使系统结构更清晰,便于理解和测试。 4. **支持并行开发**:团队成员可以独立开发和测试不同的模块,提升开发效率。 ```python # 示例:高内聚低耦合的设计 class DataValidator: """高内聚:专注于数据校验""" @staticmethod def validate_email(email): return "@" in email and "." in email @staticmethod def validate_age(age): return isinstance(age, int) and 0 < age < 150 class UserRegistration: """依赖DataValidator,但不关心其内部实现 —— 低耦合""" def __init__(self, validator): self.validator = validator def register(self, email, age): if self.validator.validate_email(email) and self.validator.validate_age(age): return {"status": "success", "data": {"email": email, "age": age}} else: return {"status": "fail", "reason": "invalid input"} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值