In einem C++ - Projekt können Kompilierungsabhängigkeiten die Wartung eines Softwareprojekts erschweren. Welche Best Practices zur Begrenzung von Abhängigkeiten gibt es sowohl innerhalb eines Moduls als auch in Modulen?Was sind einige Techniken zum Einschränken der Kompilierungsabhängigkeiten in C++ - Projekten?
Antwort
Ich glaube, Sie sehr vorsichtig und rücksichtsvoll darüber sein müssen. Im Allgemeinen können Sie Abhängigkeiten begrenzen, indem Sie den Code trennen und abstrakte Schnittstellen verwenden (z. B .: Funktionszeiger oder ein äquivalentes Objekt), aber Trennung fügt im Allgemeinen Brüchigkeit hinzu. Sie können z. B. ein Modul über eine generische abstrakte Schnittstelle aufrufen, um die Abhängigkeit von der tatsächlichen Objektimplementierung zu reduzieren, aber Sie müssen die Schnittstelle synchron mit dem Objekt selbst aktualisieren, oder der Code wird zur Laufzeit fehlschlagen.
Ich würde sagen, dass es wichtig ist, große Projekte in Modulen mit einer wohldefinierten Hierarchie zu strukturieren, aber innerhalb jedes Moduls nicht über Bord gehen mit dem Auseinanderbrechen von Code, um Abhängigkeiten zu begrenzen. Wenn Sie nach einer verbesserten Wartung suchen, müssen Sie weniger Abhängigkeiten ausgleichen und die Codefragilität verringern.
Herb Sutter hat eine große Behandlung dieses genauen Themas in Artikel 26, 27 und 28, "Minimierung Compile-Zeit-Abhängigkeiten, Teile 1, 2 und 3", in seinem ausgezeichneten Buch Exceptional C++, ISBN: 0201615622.
alt text http://ak.buy.com/db_assets/prod_images/489/30611489.jpg
IMHO ist dies eines der besten C++ Programmierung Bücher zur Verfügung.
Werfen Sie auch einen Blick auf:
Large-Scale C++ Software Design (Addison-Wesley Professional Computing Series)
Wie würde Clooney sagen: "Was sonst" ??? Wie auch immer, ich finde die "Abstract Interface" Verknüpfung in einem C++ Fall aus dem Thema heraus: Kein Beispiel für eine C++ Schnittstelle und ihre abgeleitete Implementierung ... – paercebal