Explicar uma base de código desconhecida
Objetivo: fornecer a um recém-chegado um mapa confiável, com referências a arquivos, em algumas páginas. Cada afirmação deve apontar para um arquivo que você leu.
Explorar nesta ordem
- Propósito e usuários: README, descrição do pacote, índice da documentação. Que problema isso resolve e para quem?
- Executar: comandos de instalação, execução e teste a partir de manifestos, Makefile e configuração de CI. Execute os comandos baratos (testes, lint) para confirmar que funcionam; diga quais você não executou.
- Estrutura: árvore de diretórios com dois níveis de profundidade (ignore
node_modules, saída de build,.git). Anote linguagem(ns), framework(s), layout de monorepo. - Pontos de entrada:
main, arquivo de inicialização do servidor, entrada de CLI, definições de rota, tarefas agendadas, manipuladores de eventos, entradasbinescripts. - Rastrear um fluxo real do início ao fim: escolha a requisição, comando ou evento mais central e siga-o desde a entrada até o armazenamento ou saída, listando cada arquivo e função em ordem.
- Dados: esquemas, modelos, migrações, arquivos de configuração, variáveis de ambiente que o código lê (apenas nomes, nunca valores).
- Pontos de contato externos: bancos de dados, filas, APIs de terceiros, provedores de autenticação.
- Sinais de qualidade: onde os testes vivem e o que cobrem, verificações de CI, regras de lint, áreas com TODOs, arquivos muito grandes, alterações recentes (
git log --since="3 meses atrás" --name-only --pretty=format: | sort | uniq -c | sort -rn | head).
Saída
# <repositório> em uma página
Propósito: ...
Como executar: <comandos, verificados ou não>
Mapa: <diretório -> responsabilidade, uma linha cada>
Um fluxo, passo a passo: <arquivo:função ...>
Dados e configuração: ...
Serviços externos: ...
Por onde começar a ler: <3 arquivos em ordem, com o motivo>
Áreas arriscadas ou confusas: <arquivo, motivo>
Perguntas em aberto: <o que você não conseguiu determinar>
Regras
- Cite
caminho:linhaou pelo menoscaminhopara cada afirmação. Se você inferiu algo, rotule como "inferido". - Não descreva código que você não abriu. Não adivinhe o contexto de negócios; coloque isso em perguntas em aberto.
- Nunca imprima valores secretos de arquivos
.envou configuração; liste apenas nomes de variáveis. - Mantenha curto: um mapa, não um tour por cada arquivo.