个人觉得软件耦合,是用来判断一个模块(功能,野可以简单理解为一个xx.c文件)与其他模块之间的耦合联系的,通过理论分析我们可以确定出两个模块之间的必须耦合元素有哪些,然后由于C语言@jonah_king的灵活性,我们必须选择出最合适的耦合方式。
耦合按照标准的定义一共分为以下7个类别:
内容耦合是最高程度的耦合
如果出现下列情况之一,两个模块间就发生了内容耦合:
1.1、一个模块A访问另一个模块B的内部数据@jonah_king(不是全局变量);
缺点:模块A的运行会被模块B内部的数据修改影响(甚至是被修改的时间)。
(1)模块A依赖模块B的内部运作,要想了解A,必须先了解模块B的内部变量,降低了可读性。
(2)模块B很有可能不知道模块A的存在,若更改模块B,很可能导致A的动作,但是B却不知道。
更改建议:
程序中不允许存在内容耦合,如果必须耦合的话,设计相应访问借口。
1.2、一个模块不通过正常入口转到另一个模块的内部@jonah_king(C语言)
goto语句会造成此现象。
更改建议:
程序中禁止使用goto语句,此语句会严重增加代码的复杂度和可读性。
1.3、两个模块有一部分程序代码重叠;汇编
1.4、一个模块有多个入口。