起因
我在想办法写代码的时候,想降低耦合,增加内聚能力。这个口号天天喊,模块化天天说,但是什么是才算内聚什么才算耦合?平时我们都是经验主义和习惯主义,脑子中没有一个准确的定义和概念。
内聚
偶然内聚 :就是一个模板内,所有元素互不干扰独立的
逻辑内聚 :就是通过传参来影响模块内部的逻辑功能,就是一般的传参操作 fun(temp);
时间内聚 :同时执行的行为和动作组合起来形成的模块,比如一键实现界面登录和打开主页
过程内聚 :指一个模块完成多个任务,这些任务必须按指定的过程执行。 例如:先写姓名 → 电话 → 家庭住址
通信内聚 : 在逻辑内聚的基础上,通过传数据结构来实现操作,数组、结构体、链表等
顺序内聚 : 一个模块内,前一个元素所产生的影响会影响后一个元素的操作
功能内聚 :一个模板内,所有元素完成一个功能,缺一个不可
耦合
无直接耦合 :就是模块没有联系,就是主模块来调用两个独立模块
数据耦合 : 有联系但不多,就是传参一样的操作
标记耦合 : 这个就是在上面基础,传数据结构
控制耦合 : 这个就不是传参副本了,而是直接修改源数据了。比如传地址
外部耦合 : 就是几个模块共用一堆数据区(全局变量),但是这些数据区是只读不修改的
公共耦合 : 多个模块公用一个数据集合,而且可以修改
内容耦合 : 这个是最糟糕的耦合了,就是一个模块调用另一模块内部的属性,比如使用另一个模块的static变量,类变量等等
结语
内聚和耦合是不可避免的,一些耦合度很高的模块,就可以选择合并到一起,或者编译成库等都是可以的
我们作为开发人员,就需要尽可能高内聚低耦合,模块化哦!