代码编程教学入门 代码怎么编写( 三 )


代码编程教学入门 代码怎么编写


如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合,它是较好的耦合形式 。
代码编程教学入门 代码怎么编写


C. 印记(引用)耦合
代码编程教学入门 代码怎么编写


当模块之间使用复合数据结构进行通信时,就会发生印记耦合 。
复合数据结构可以是数组、类、结构体、联合体等的引用,通过复合数据结构在模块之间传递的参数,可能会或不会被接收模块完全使用 。
代码编程教学入门 代码怎么编写


印记耦合优点:把模块A的引用一把传递给模块B,模块B只需要接受少量参数,接口说明简单 。
印记耦合缺点:
    • 不必要的参数:模块B可能只使用了模块A中部分的数据 。
    • 模块B捆绑了模块A:任何需要用到模块B的地方,都需要先获取到模块A,无法脱离模块A单独使用 。
    • 修改可能互相影响:修改模块A或模块B,可能导致对方也需要跟着修改,不符合开闭原则 。
印记耦合优化:增加入参数类型,进传入模块需要的必要数据,如下:
代码编程教学入门 代码怎么编写


d. 控制耦合
代码编程教学入门 代码怎么编写


如果一个模块通过传送开关、标志等控制信息,明显地控制选择另一模块的功能,就是控制耦合 。
代码编程教学入门 代码怎么编写


  • 数据耦合和控制耦合的主要区别:在数据耦合中,模块之间的依赖关系非常小,而在控制耦合中,模块之间的依赖关系很高 。在数据耦合中,模块之间通过传递数据进行通信,而在控制耦合中,模块之间通过传递模块的控制信息进行通信 。
  • 控制耦合优化:把控制的逻辑放在模块A之中,或增加模块C封装控制逻辑,不然模块B只做某一件独立的事情 。
e. 外部耦合
代码编程教学入门 代码怎么编写


外部耦合,是指多个模块同时依赖同一个外部因素(IO设备/文件/协议/DB等),如上图所示:
外部耦合与与外部设备的通信有关,而不是与公共数据或数据流有关 。
一个模块对外部数据或通信协议所做的任何更改都会影响其他模块,可以通过增加中间模块隔离外部变化来降低耦合度,如下:
代码编程教学入门 代码怎么编写


f. 共用耦合
代码编程教学入门 代码怎么编写


共用耦合是指不同的模块共享全局数据的信息(全局数据结构、共享的通信区、内存的公共覆盖区) 。
代码编程教学入门 代码怎么编写


共用耦合的问题:
  1. 较难控制各个模块对公共数据的存取,容易影响模块的可靠性和适应性 。
  2. 使软件的可维护性变差,若一个模块修改了共用数据,则会影响相关模块 。
  3. 降低了软件的可理解性,不容易清楚知道哪些数据被哪些模块所共享,排错困难 。
g. 内容耦合
内容耦合在低级语言(汇编)中出现,高级语言从设计上已避免出现内容耦合 。
如果发生下列情形,两个模块之间就发生了内容耦合:

推荐阅读