「高い結束と低い結合を維持する」(またはその変形) というマントラが頻繁に使われます。しかし、「同じことを繰り返すな」と矛盾することがよくあります。
たとえば、std::stringC 文字列を再実装したり使用したりするのは悪いことだと誰もが同意できると思いstd::stringます。
別の例として、 を取り上げstd::stringstreamます。から継承しiostream、から継承istreamし、ostreamから継承しios、 から継承しios_baseます。これらすべての派生を通じて、多くの機能を継承しています。手作業で再実装するのは非常に悪い考えです。<ios>また、ヘッダーと<istream>ヘッダーのみが含まれていてもプルするため、<sstream>カップリングが増加します。
モジュールごとに車輪を再発明することなく、結合を低く保つにはどうすればよいでしょうか?
編集: 2 つの概念が共存できない場合、どちらを優先する必要がありますか?