Una buena práctica es no preocuparse por su estrategia de encabezado siempre que se compile.
La sección de encabezado de su código es solo un bloque de líneas que nadie debería mirar hasta que obtenga un error de compilación fácil de resolver. Entiendo el deseo de un estilo "correcto", pero ninguna de las dos formas puede describirse realmente como correcta. La inclusión de un encabezado para cada clase es más probable que cause errores de compilación molestos basados en el orden, pero esos errores de compilación también reflejan problemas que la codificación cuidadosa podría solucionar (aunque posiblemente no valga la pena el tiempo para solucionarlo).
Y sí, tendrá esos problemas basados en pedidos una vez que comience a entrarfriend
tierra.
Puedes pensar en el problema en dos casos.
Caso 1: tiene un pequeño número de clases que interactúan entre sí, digamos menos de una docena. Regularmente agrega, elimina y modifica de otra manera estos encabezados, de manera que pueden afectar sus dependencias entre sí. Este es el caso que sugiere su ejemplo de código.
El conjunto de encabezados es lo suficientemente pequeño como para que no sea complicado resolver los problemas que surjan. Cualquier problema difícil se soluciona reescribiendo uno o dos encabezados. Preocuparse por su estrategia de encabezado es resolver problemas que no existen.
Caso 2: Tienes docenas de clases. Algunas de las clases representan la columna vertebral de su programa, y reescribir sus encabezados lo obligaría a reescribir / recompilar una gran cantidad de su código base. Otras clases usan esta columna vertebral para lograr cosas. Esto representa un entorno empresarial típico. Los encabezados se extienden por los directorios y no puede recordar de manera realista los nombres de todo.
Solución: en este punto, debe pensar en sus clases en grupos lógicos y reunir esos grupos en encabezados que eviten que tenga que #include
repetir una y otra vez. Esto no solo simplifica la vida, sino que también es un paso necesario para aprovechar los encabezados precompilados .
Se termina #include
ing clases que no necesita, pero a quién le importa ?
En este caso, su código se vería como ...
#include <Graphics.hpp>
struct Entity {
Texture texture;
RenderObject render();
}