Pregunta

he estado desarrollando un intérprete en C ++ para mi (esotérica, si lo desea) Lenguaje de Programación algún tiempo. Una de las principales cosas que he notado:. Comienzo con un concepto flexible, y el código adicional I (Tokenizer-> parser-> Intérprete) al menos flexibles, todo el sistema obtiene

Por ejemplo: Yo no puso en práctica una función include en un primer momento, sin embargo, el intérprete estaba ya en funcionamiento - que tenía dificultades extremas para aplicarlo y que era igual que "parchear algo" más adelante. Mi sistema había perdido flexibilidad muy rápidamente.

  • ¿Cómo puedo aprender a mantener relativamente pequeños proyectos de C ++ como flexible y extensible como sea posible durante el desarrollo?
¿Fue útil?

Solución

  1. Definir la estructura del proyecto antes de empezar a programar. Resumen de sus principales objetivos y pensar en cómo se puede lograr eso.

  2. Código de las cabeceras.

  3. Mira si es posible llevar a cabo todas las funciones que utiliza este conjunto de interfaces

  4. Si no -> volver a (2)

  5. En caso afirmativo -> archivos de código .cpp

  6. Disfrute.

Por supuesto, esto no se aplica a los proyectos muy grandes. Pero si su diseño es modular, no debería haber ningún problema para dividir el proyecto en partes separadas.

Otros consejos

Si usted necesita para mantener

  

proyectos de C ++ como flexible y extensible como sea posible durante el desarrollo

entonces no has conseguido un pliego de condiciones, no tiene verdadero objetivo y no hay manera de definir un producto terminado.

Para obtener un producto comercial es la peor situación para estar adentro. Parafraseando un conocido blogger (no recuerdo quién) "no se tiene un producto hasta que defina lo que no se va a hacer."

Para los proyectos personales que esto podría no ser un problema. Atribuírselo a la experiencia y recordar para futuras referencias. Refactor y seguir adelante.

No temas a la evolución (Refactoring).

Si hay muchas clases que se ajusten a un tema, crear una clase base común.

En lugar de los miembros de datos de codificación duros, punteros de uso a una clase base abstracta.
Por ejemplo, en lugar de utilizar uso std::ifstream std::istream.

En mi proyecto, que tiene clases abstractas para lectura y escritura. Clases que admiten lectura y la escritura el uso de estas interfaces. Puedo pasar a lectores especializados a estas clases sin cambiar ningún código. Un lector de la base de datos podría heredar de la clase lector de base, y por lo tanto puede ser utilizado en cualquier lugar se utiliza un lector.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top