En un proyecto de C++, las dependencias de compilación pueden dificultar el mantenimiento de un proyecto de software. ¿Cuáles son algunas de las mejores prácticas para limitar dependencias, tanto dentro de un módulo como a través de módulos?¿Cuáles son algunas técnicas para limitar las dependencias de compilación en proyectos de C++?
Respuesta
creo que tiene que ser muy cuidadoso y detallado acerca de esto. En general, puede limitar las dependencias separando el código y usando interfaces abstractas (por ejemplo: punteros de función o un objeto equivalente), pero la separación generalmente agrega fragilidad. Por ejemplo, puede llamar a un módulo a través de una interfaz abstracta genérica para reducir la dependencia en la implementación real del objeto, pero debe actualizar la interfaz en sincronización con el objeto en sí, o el código fallará en tiempo de ejecución.
Diría que es importante estructurar grandes proyectos en módulos con una jerarquía bien definida, pero dentro de cada módulo no se exceda con el código de división para limitar las dependencias. Si busca un mantenimiento mejorado, debe equilibrar las dependencias reduciendo la fragilidad del código.
Herb Sutter tiene un gran tratamiento de este tema exacta en los puntos 26, 27 y 28, "dependencias Minimizando el tiempo de compilación, partes 1, 2 y 3", en su excelente libro excepcional C++, ISBN: 0201615622.
alt text http://ak.buy.com/db_assets/prod_images/489/30611489.jpg
en mi humilde opinión, este es uno de los mejores libros de programación C++ disponible.
también echar un vistazo a:
Large-Scale C++ Software Design (Addison-Wesley Professional Computing Series)
- 1. ¿Cuáles son algunas ideas de proyectos para Arduino?
- 2. ¿Cuáles son algunas de las partes más oscuras de C++?
- 3. ¿Cuáles son las diferentes técnicas para la memorización en Java?
- 4. ¿Cuáles son algunas técnicas o herramientas para perfilar un tamaño de código excesivo en aplicaciones C/C++?
- 5. ¿Cuáles son algunas buenas técnicas para convertir una aplicación de Ms Access a .Net Application?
- 6. ¿Cuáles son algunas metodologías de programación para desarrolladores en solitario?
- 7. ¿Cuáles son algunas técnicas para migrar una aplicación MFC grande a WPF/.NET?
- 8. ¿Cuáles son algunas situaciones en las que Agile es inapropiado?
- 9. ¿Cuáles son las últimas técnicas de DeBayer/Demosaicing?
- 10. ¿Cuáles son algunas técnicas viables para combinar la protección CSRF con API RESTful?
- 11. ¿Cuáles son las técnicas más utilizadas para habilitar las extensiones de código de usuario en Python?
- 12. ¿Cuáles son las técnicas de optimización del compilador de C++ en Visual Studio
- 13. ¿Cuáles son las técnicas para permitir actualizaciones de software seguras en sistemas integrados?
- 14. ¿Cuáles son algunas convenciones de directorio adicionales para proyectos de Maven?
- 15. Herramienta de compilación y gestión de proyectos para compilación y dependencias de iOs
- 16. ¿Cuáles son algunas de las alternativas del pagerank?
- 17. ¿Cuáles son las limitaciones técnicas al usar Fusion Tables?
- 18. ¿Cuáles son algunas características útiles de TextMate?
- 19. ¿Cuáles son las bibliotecas comunes para C?
- 20. ¿Cuáles son algunas de las bibliotecas de cifrado/hash más utilizadas en C?
- 21. ¿Cuáles son algunas técnicas de optimización para la tabla MySQL con más de 300 millones de registros?
- 22. ¿Cuáles son algunas herramientas de cobertura de código para Perl?
- 23. En SAS, ¿cuáles son las buenas técnicas/opciones para detectar errores de sintaxis?
- 24. Técnicas para mantener sus proyectos en la última versión
- 25. ¿Cuáles son algunas de las mejores prácticas de uso de la Biblioteca estándar de C++?
- 26. ¿Existen razones técnicas para evitar la creación de dependencias de paquetes muy enredados en grandes proyectos de Java?
- 27. ¿Cuáles son algunas características interesantes del código fuente de EveryBlock.com?
- 28. ¿Cuáles son las formas de mejorar el tiempo de compilación/compilación?
- 29. ¿Cuáles son las ventajas de usar Objective-C sobre C++
- 30. ¿Cuáles son algunas buenas formas de distribuir un archivo común de hormigas para incluir en compilaciones?
como sería Clooney decir: "¿Qué otra cosa" ??? De todos modos, encuentro el enlace "Interfaz abstracta" fuera del tema en un caso de C++: Ningún ejemplo de una interfaz C++ y su implementación derivada ... – paercebal