引子:模块独立性
含义
模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的的联系最少且接口简单。
模块独立性是指模块内部各部分以及模块之间关系的一种衡量标准,由 内聚 和 耦合 来度量。
模块独立性的重要性
由于功能分割,接口简化,具有独立模块的软件容易开发,当多个人并行开发项目时候,尤为明显。
另外,独立的模块也容易测试、维护。修改设计和程序需要的工作量比较小,错误辐射范围小,并且容易扩展。
内聚 & 耦合
内聚:一个模块内各个元素彼此结合的紧密程度。
耦合:一个软件结构内不同模块之间互连程度的度量。
以下是个人YY:
无论是高内聚还是低耦合,本质都脱离不了模块独立性的初衷,即:独立(低耦合)、协作(高内聚)。
用大白话来讲,就类似与学校内部各个部门、院系之间是相互独立,各自作业的(低耦合),同时,各部门会提供一个或几个办公室(尽可能少,主要用于盖章。。。)用以对外交接(接口)。
但是在部门内部,各个办公室之间交往甚密。且每个办公室往往只做单一的事(功能单一),CSDN上看到有人说:最强的内聚就是功能单一到不能再拆分,即原子化。高内聚指的是,部门内部的办公室要紧密联系,各司其职,达到共同的最终功能。如果某个办公室是与其他关系比较疏松(离群点?)可以考虑部门调整。
个人觉得,其实更小的粒度,比如类与类之间也存在耦合 & 内聚。方法的封装可以从内聚 和 耦合考虑,继而决定封装到哪个类中。以上,纯属YY。