模块之间有几个级别的耦合(根据本文):
根据文章:
控制耦合:如果模块通过传递控制信息进行通信,则称它们是控制耦合的。如果参数指示完全不同的行为,则可能很糟糕;如果参数允许分解和重用功能,则可能很好。示例-以比较函数作为参数的排序函数。
公共耦合:模块具有共享数据,例如全局数据结构。全局数据的变化意味着追溯到访问该数据的所有模块以评估变化的影响。
我们实际上可以将
LogLevel
传递给外部记录器。它可以被视为控制信息。
我们可以认为我们的程序和外部记录器之间存在“控制耦合”吗?
LogLevel
枚举也可以被视为
全局数据结构。是普通联轴器吗? 没明白主要区别。
,发送“LogLevel”作为控制参数是控制耦合。 有两个耦合,但它们并不重要。因为你的记录器合约不会随着时间的推移而改变。如果您担心与外部库的耦合,您应该考虑定义记录器接口并使用第三方记录器改编来实现它。
更好的方法是为 LogLevel 的每个值定义不同的方法。 例如,您的记录器必须实现错误、调试、信息和警告方法。 这样你就可以摆脱控制耦合。