Neben all den anderen Antworten ist eine Entkopplung noch nicht erwähnt:
Lassen Sie mich über einen realen Produktionscode sprechen, mit dem ich mich befasst habe:
Eine sehr große Software, die aus> 300 Projekten (mit Visual Studio) besteht, meistens als statische Bibliothek erstellt wird und schließlich alle in einer riesigen ausführbaren Datei miteinander verbunden sind, führt zu folgenden Problemen:
-Link-Zeit ist extrem lang. Möglicherweise benötigen Sie mehr als 15 Minuten Link, z. B. 10 Sekunden Kompilierungszeit. Einige Tools sind mit einer so großen ausführbaren Datei auf dem Knie, wie z. B. Tools zur Speicherprüfung, die den Code instrumentieren müssen. Sie könnten an Grenzen stoßen, die als Dummköpfe angesehen wurden.
Problematischer ist die Entkopplung Ihrer Software: In diesem Beispiel aus der Praxis waren Header-Dateien jedes Projekts von allen anderen Projekten aus erreichbar. Infolgedessen war es für einen Entwickler äußerst einfach, Abhängigkeiten hinzuzufügen. Es ging nur darum, den Header einzuschließen, da der Link am Ende immer Symbole findet. Es endet mit schrecklichen Fahrradabhängigkeiten und völligem Durcheinander.
Bei einer gemeinsam genutzten Bibliothek ist dies ein wenig zusätzlicher Aufwand, da der Entwickler das Projekterstellungssystem bearbeiten muss, um die abhängige Bibliothek hinzuzufügen. Ich habe festgestellt, dass gemeinsam genutzter Bibliothekscode tendenziell eine sauberere Code-API bietet.