“保持高内聚和低耦合”(或一些变体)的口头禅经常被抛来抛去。但是,我发现它经常与“不要重复自己”相冲突。
例如,我认为我们都同意重新实现std::string
或使用 C 字符串是一件坏事,但不包括std::string
创建另一个依赖项并因此增加耦合?
再举一个例子,以std::stringstream
. 它继承自iostream
,继承自istream
and ostream
,继承自ios
,继承自ios_base
。在所有这些派生中,它继承了许多功能 - 足以使手动重新实现成为一个非常糟糕的主意。即使只包括在内,它也会拉动<ios>
和头,从而增加耦合。<istream>
<sstream>
如何在不为每个模块重新发明轮子的情况下保持低耦合?
编辑:如果这两个概念不能共存,应该偏爱哪一个?