A primeira "melhor prática" seria dar nomes mais significativos para as coisas.
A segunda seria não buscar receitas de bolo assim, que as pessoas chamam de boas práticas e olhar o contexto, tentar achar uma solução de acordo com o que precisa.
Não temos o contexto, não sabemos nada do que tem dentro disso. A intenção é o que definirá qual é a melhor.
Sem contexto algum eu chutaria que o primeiro é mais adequado. Pelo menos até ter uma boa justificativa para fazer o segundo. Assim deixa mais explícito o que está "importando". Eu não estou conseguindo ver algum ganho em criar uma camada a mais.
A não ser que eu tenha entendido algo errado.
Espero ter ajudado.
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).
Todos os nomes citados foram ilustrativos.
Para contextualizar mais, dentro de "extern.h
" iria ser incluido todas as funções e estruturas que outros diretórios usariam, assim, eu consigo incluir tudo com apenas um header, ao invés de, como no exemplo, 3. O tradeoff que eu acredito existir é que eu ganho simplicidade na hora de importar as funções mas perco alguns ms (imperceptivel) na hora de compilar. Isso simplifica as coisas pra mim (tenho uma grande dificuldade pra ler, e entender, coisas "empilhadas"), mas, ainda existe a dúvida se é, ou não, algo "recomendável" a se fazer. Simplificando, um barrel file em typescript/javascript.
De toda forma, agradeço a contribuição, acredito que irei continuar com as múltiplas diretrizes