A boa prática é não se preocupar com sua estratégia de cabeçalho, desde que seja compilada.
A seção de cabeçalho do seu código é apenas um bloco de linhas que ninguém deve olhar até que você obtenha um erro de compilação facilmente resolvido. Entendo o desejo de um estilo "correto", mas nenhuma das maneiras pode realmente ser descrita como correta. A inclusão de um cabeçalho para cada classe tem mais probabilidade de causar erros irritantes de compilação com base em ordem, mas esses erros de compilação também refletem problemas que uma codificação cuidadosa poderia corrigir (embora, sem dúvida, não valha a pena consertar).
E sim, você terá esses problemas com base em pedidos assim que começar a entrar em friend
terra.
Você pode pensar no problema em dois casos.
Caso 1: você tem um pequeno número de classes interagindo entre si, digamos menos de uma dúzia. Você adiciona, remove e modifica regularmente esses cabeçalhos de maneiras que possam afetar suas dependências um do outro. Este é o caso que o seu exemplo de código sugere.
O conjunto de cabeçalhos é pequeno o suficiente para não ser complicado resolver quaisquer problemas que surjam. Quaisquer problemas difíceis são corrigidos reescrevendo um ou dois cabeçalhos. Preocupar-se com sua estratégia de cabeçalho é resolver problemas que não existem.
Caso 2: você tem dezenas de aulas. Algumas das classes representam a espinha dorsal do seu programa, e reescrever seus cabeçalhos forçaria você a reescrever / recompilar uma grande quantidade de sua base de código. Outras classes usam esse backbone para realizar as coisas. Isso representa uma configuração comercial típica. Os cabeçalhos estão espalhados pelos diretórios e você não consegue se lembrar realisticamente dos nomes de tudo.
Solução: Nesse momento, você precisa pensar em suas classes em grupos lógicos e coletar esses grupos em cabeçalhos que impedem que você tenha que repetir #include
várias vezes. Isso não apenas torna a vida mais simples, como também é uma etapa necessária para tirar proveito dos cabeçalhos pré-compilados .
Você acaba tendo #include
aulas que não precisa, mas quem se importa ?
Nesse caso, seu código seria semelhante a ...
#include <Graphics.hpp>
struct Entity {
Texture texture;
RenderObject render();
}