Dans un projet C++, les dépendances de compilation peuvent rendre un projet logiciel difficile à maintenir. Quelles sont les meilleures pratiques pour limiter les dépendances, à la fois dans un module et entre les modules?Quelles sont les techniques pour limiter les dépendances de compilation dans les projets C++?
Répondre
Je pense que vous devez être très prudent et attentif à ce sujet. Généralement, vous pouvez limiter les dépendances en séparant le code et en utilisant des interfaces abstraites (par exemple: des pointeurs de fonction ou un équivalent d'objet), mais la séparation ajoute généralement de la fragilité. Par exemple, vous pouvez appeler un module via une interface abstraite générique pour réduire la dépendance à l'implémentation réelle de l'objet, mais vous devez mettre à jour l'interface en synchronisation avec l'objet lui-même, sinon le code échouera au moment de l'exécution. Je dirais qu'il est important de structurer des projets volumineux dans des modules avec une hiérarchie bien définie, mais dans chaque module, il ne faut pas aller trop loin avec un code séparé pour limiter les dépendances. Si vous souhaitez améliorer la maintenance, vous devez équilibrer la réduction des dépendances avec la réduction de la fragilité du code.
Herb Sutter a un traitement de ce sujet précis dans des articles 26, 27 et 28, "Minimisation dépendances Compile-temps, les parties 1, 2 et 3", dans son excellent livre exceptionnel C++, ISBN: 0201615622.
alt text http://ak.buy.com/db_assets/prod_images/489/30611489.jpg
à mon humble avis, c'est l'un des meilleurs livres de programmation C++ disponible.
Jetez aussi un oeil à:
Large-Scale C++ Software Design (Addison-Wesley Professional Computing Series)
- 1. Techniques pour supprimer les dépendances?
- 2. Quelles sont les alternatives dans les projets OS pour C# similaires à Joomla/Mambo/Drupal?
- 3. Quelles sont les dépendances communes de Weblogic 8.1.6
- 4. Grouper les dépendances maven entre les projets
- 5. Dépendances binaires dans les projets Visual Studio
- 6. Quelles sont les dépendances minimales de Spring pour l'injection de dépendances?
- 7. Quelles sont les bonnes techniques pour tester les performances des parties Web et des contrôles SharePoint?
- 8. Trouver les dépendances d'une classe dans C#
- 9. Techniques de distribution des contrôles utilisateur ASP.NET dans les projets
- 10. Quelles sont les exigences techniques et le format de base raisonnable pour une icône de l'iPhone?
- 11. Quelles sont les meilleures techniques pour accélérer le téléchargement de mes sites LAMP?
- 12. Quelles sont les alternatives pour CSharpOptParse?
- 13. Quelles sont les règles pour nommer les classes AS3?
- 14. Quelles sont les techniques de reconnaissance de mots dans un flux audio?
- 15. Quelles sont les techniques utilisées pour renvoyer les erreurs de validation MVC ModelState au client lors de l'utilisation de JsonResult?
- 16. Quelles sont les meilleures pratiques pour gérer les informations sensibles?
- 17. trouver toutes les dépendances dans une compilation verilog
- 18. Quelles techniques d'analyse informataion sont disponibles pour l'analyse qualitative des données générées par les utilisateurs?
- 19. Quelles sont les meilleures ressources pour apprendre l'écriture idiomatique C#?
- 20. Quelles sont les options disponibles pour VisualSVNServerHooks.exe?
- 21. Quelles sont les conventions pour les en-têtes et les fichiers cpp en C++?
- 22. Quelles sont les considérations techniques pour exécuter MSSQL et MySQL sur le même serveur Windows?
- 23. Quelles sont les spécifications HW recommandées pour les virtualisations?
- 24. Quelles sont les bonnes ressources pour comprendre les MIB SNMP?
- 25. Quelles sont les utilisations intéressantes pour les agents Java?
- 26. Quelles sont les ressources pour apprendre à écrire les spécifications?
- 27. Quelles sont les meilleures pratiques pour les URL publiques «privées»?
- 28. Quelles sont les bonnes ressources pour apprendre sur les génériques?
- 29. quelles sont les phases dans le processus de construction
- 30. Quelles sont les modifications empilables?
Comme cela Clooney dit: "Que" ??? Quoi qu'il en soit, je trouve le lien "Abstract Interface" hors sujet dans un cas C++: Pas d'exemple d'une interface C++ et de son implémentation dérivée ... – paercebal