2

「高い結束と低い結合を維持する」(またはその変形) というマントラが頻繁に使われます。しかし、「同じことを繰り返すな」と矛盾することがよくあります。

たとえば、std::stringC 文字列を再実装したり使用したりするのは悪いことだと誰もが同意できると思いstd::stringます。

別の例として、 を取り上げstd::stringstreamます。から継承しiostream、から継承istreamし、ostreamから継承しios、 から継承しios_baseます。これらすべての派生を通じて、多くの機能を継承しています。手作業で再実装するのは非常に悪い考えです。<ios>また、ヘッダーと<istream>ヘッダーのみが含まれていてもプルするため、<sstream>カップリングが増加します。

モジュールごとに車輪を再発明することなく、結合を低く保つにはどうすればよいでしょうか?

編集: 2 つの概念が共存できない場合、どちらを優先する必要がありますか?

4

1 に答える 1

3

DRY についてはhttp://www.artima.com/intv/dry.htmlを参照してください。
特に「ほとんどの人は DRY を、コードを複製してはならないという意味で捉えています。それは意図したものではありません。DRY の背後にある考え方は、それよりもはるかに壮大です。 " .

これに加えて、説明した例では、std::string の内部情報に依存/使用していないため、std::string とシステムは緊密に結合されていません。std::string への (内部的な) 変更は、システムには影響しません。

于 2011-07-03T22:32:36.797 に答える