Recibí respuestas sobre temas similares aquí en SO pero no pude encontrar una respuesta satisfactoria. Como sé que este es un tema bastante amplio, trataré de ser más específico.¿Cómo escribir un programa modular flexible con buenas posibilidades de interacción entre módulos?
Quiero escribir un programa que procesa archivos. El procesamiento no es trivial, así que la mejor manera es dividir diferentes fases en módulos independientes que luego se usarían según sea necesario (ya que a veces solo me interesaría la salida del módulo A, a veces necesitaría la salida de otros cinco módulos, etc.) La cuestión es que necesito que los módulos cooperen, porque la salida de uno puede ser la entrada de otro. Y necesito que sea RÁPIDO. Además, quiero evitar hacer cierto procesamiento más de una vez (si el módulo A crea algunos datos que luego deben ser procesados por el módulo B y C, no quiero ejecutar el módulo A dos veces para crear la entrada para los módulos B, C) .
La información que los módulos necesitan compartir sería principalmente bloques de datos binarios y/o desplazamientos en los archivos procesados. La tarea del programa principal sería bastante simple: simplemente analizar los argumentos, ejecutar los módulos necesarios (y tal vez dar algún resultado, ¿o debería ser esta la tarea de los módulos?).
No necesito que los módulos se carguen en tiempo de ejecución. Está perfectamente bien tener libs con un archivo .h y recompilar el programa cada vez que hay un módulo nuevo o algún módulo se actualiza. La idea de los módulos está aquí principalmente debido a la legibilidad del código, mantener y poder tener más personas trabajando en diferentes módulos sin la necesidad de tener alguna interfaz predefinida o lo que sea (por otro lado, algunas "pautas" sobre cómo escribir el probablemente se requerirían módulos, lo sé). Podemos suponer que el procesamiento de archivos es una operación de solo lectura, el archivo original no se modifica.
¿Alguien podría indicarme una buena dirección sobre cómo hacer esto en C++? Cualquier consejo es bienvenido (enlaces, tutoriales, libros pdf ...).
Esta pregunta es básicamente " ¿Cómo escribo el código modular? Como _todo el código debe ser modular, no hay nada específicamente sobre C++ aquí, o sobre su dominio de problema particular. y la respuesta es "aplicando habilidad, talento y experiencia". –