耦合以及如何减少它

时间:2014-04-22 10:30:30

标签: coupling

以下哪一行代码耦合发生? 什么是耦合?这种耦合引起的问题是什么?如何重构代码以减少耦合?

a busy cat

1 个答案:

答案 0 :(得分:0)

解决这个问题的一种方法是查看函数/方法所依赖的所有内容。

它明确依赖于它的参数 - 在这种情况下是一种控制耦合形式。

但是,如果我们尝试单独编译此方法,我们可以看到它所依赖的所有其他对象:

  • Log,以及Log的一些特定方法(请注意,我们似乎总是调用这两种方法)
  • IGNORE_USER_REQUESTS
  • LOG_VERBOSITY_LEVEL,在此方法中重复4次
  • 特定的收集器类。
  • mem和4个属性(size,startAddress等) - 可能是一种内容耦合形式

我认为你可以说有几种共同耦合(共享全局变量)的情况,尽管从有限的背景来看并不是非常清楚。变量可以在对象或包中范围内,而不是真正的“全局”。

然后考虑:

  • 如果我们想要更改其中一项,会发生什么。例如,如果我们想要使用不同的收集器实现或不同的记录器;或者mem的结构发生了变化?
  • 我们如何测试这种方法?

请注意,如果不了解更广泛的代码,我们无法正确评估此耦合的影响;例如,如果这些对象封装在一个小类中,则影响小于这些对象分散在整个代码中的情况。类似地,尝试重构这些代码有点棘手,因为我们只能猜测我们可能在我们的假设代码中的其他地方影响什么,以及我们可以自由重构哪些对象(例如,某些对象可能来自第三方库)