Embora possam ser úteis para você como uma forma de documentação, o sistema em torno dos arquivos de cabeçalho é extraordinariamente ineficiente.
C foi projetado para que cada passo de compilação construa um único módulo; cada arquivo de origem é compilado em uma execução separada do compilador. Os arquivos de cabeçalho, por outro lado, são injetados nessa etapa de compilação para cada um dos arquivos de origem que os referenciam.
Isso significa que, se o seu arquivo de cabeçalho for incluído em 300 arquivos de origem, ele será analisado e compilado repetidamente, 300 vezes em separado enquanto o programa é criado. Exatamente a mesma coisa com o mesmo resultado, repetidamente. Isso é uma enorme perda de tempo e é uma das principais razões pelas quais os programas C e C ++ demoram tanto para serem criados.
Todas as línguas modernas evitam intencionalmente essa absurda pouca ineficiência. Em vez disso, normalmente em linguagens compiladas, os metadados necessários são armazenados na saída da compilação, permitindo que o arquivo compilado atue como uma espécie de referência de pesquisa rápida que descreve o conteúdo do arquivo compilado. Todos os benefícios de um arquivo de cabeçalho, criado automaticamente sem nenhum trabalho adicional de sua parte.
Como alternativa em idiomas interpretados, todo módulo carregado é mantido na memória. Fazer referência ou incluir ou exigir alguma biblioteca lerá e compilará o código-fonte associado, que permanece residente até o término do programa. Se você também precisar dele em outro lugar, não haverá trabalho adicional, pois já foi carregado.
Em ambos os casos, você pode "navegar" pelos dados criados por esta etapa usando as ferramentas do idioma. Normalmente, o IDE terá algum tipo de navegador de classe. E se o idioma tiver um REPL, também poderá ser usado frequentemente para gerar um resumo da documentação de qualquer objeto carregado.