In einem C++-Projekt können Kompilierungsabhängigkeiten die Wartung eines Softwareprojekts erschweren. Was sind einige der besten Methoden zur Begrenzung von Abhängigkeiten, sowohl innerhalb eines Moduls als auch modulübergreifend?
Antworten
Zu viele Anzeigen?Herb Sutter hat eine großartige Behandlung dieses Themas in den Punkten 26, 27 und 28, "Minimizing Compile-time Dependencies, Parts 1, 2 and 3", in seinem hervorragenden Buch Außergewöhnliches C++ , ISBN: 0201615622.
Alt-Text http://ak.buy.com/db_assets/prod_images/489/30611489.jpg
IMHO ist dies eines der besten C++-Programmierbücher auf dem Markt.
Ich denke, Sie müssen hier sehr vorsichtig und rücksichtsvoll vorgehen. Im Allgemeinen kann man die Abhängigkeiten begrenzen, indem man den Code trennt und abstrakte Schnittstellen verwendet (z. B. Funktionszeiger oder ein Objektäquivalent), aber die Trennung erhöht im Allgemeinen die Anfälligkeit. Sie können beispielsweise ein Modul über eine generische abstrakte Schnittstelle aufrufen, um die Abhängigkeit von der tatsächlichen Objektimplementierung zu verringern, aber Sie müssen die Schnittstelle synchron mit dem Objekt selbst aktualisieren, sonst wird der Code zur Laufzeit fehlschlagen.
Ich würde sagen, dass es wichtig ist, große Projekte in Modulen mit einer klar definierten Hierarchie zu strukturieren, aber innerhalb jedes Moduls sollte man es mit dem Aufbrechen von Code nicht übertreiben, um Abhängigkeiten zu begrenzen. Wenn Sie die Wartung verbessern wollen, müssen Sie ein Gleichgewicht zwischen der Reduzierung von Abhängigkeiten und der Fragilität des Codes finden.
Schauen Sie sich auch an:
Entwurf groß angelegter C++-Software (Addison-Wesley Professional Computing Series)