2

“保持高内聚和低耦合”(或一些变体)的口头禅经常被抛来抛去。但是,我发现它经常与“不要重复自己”相冲突。

例如,我认为我们都同意重新实现std::string或使用 C 字符串是一件坏事,但不包括std::string创建另一个依赖项并因此增加耦合?

再举一个例子,以std::stringstream. 它继承自iostream,继承自istreamand ostream,继承自ios,继承自ios_base。在所有这些派生中,它继承了许多功能 - 足以使手动重新实现成为一个非常糟糕的主意。即使只包括在内,它也会拉动<ios>和头,从而增加耦合。<istream><sstream>

如何在不为每个模块重新发明轮子的情况下保持低耦合?

编辑:如果这两个概念不能共存,应该偏爱哪一个?

4

1 回答 1

3

请通过http://www.artima.com/intv/dry.html了解 DRY,
特别是“大多数人认为 DRY 意味着你不应该重复代码。这不是它的意图。DRY 背后的想法远不止于此”

除此之外,在您讨论的示例中,std::string 和您的系统不是紧密耦合的,因为您不依赖/使用 std::string 的任何内部信息。对 std::string 的任何(内部)更改都不会影响您的系统。

于 2011-07-03T22:32:36.797 回答