Ao inspecionar manualmente códigos desconhecidos (para revisar ou modificar), pareço ter três opções.
- Uma leitura de cima para baixo do código, escolhendo cada próximo arquivo de origem pelo quão fundamental o nome do arquivo parece. Normalmente, acabo lendo quase tudo. Alguns arquivos duas vezes.
- Uma leitura abrangente , onde encontro e leio todo o método de chamada com o mínimo de entendimento. Em seguida, leia todas as funções que a função chamou e assim por diante. Minha pilha mental tende a transbordar se eu fizer algumas chamadas profundas.
- Uma leitura aprofundada , na qual passo por todo o código em um depurador, sem saber se isso levará 8 minutos ou 8 horas.
Depois de ler o código o suficiente para ter uma compreensão bastante sólida do que está fazendo, geralmente reflito que li 80% ou mais da base de código, enquanto o código fundamental é 20% ou menos . Eu perdi muito tempo.
Quais ferramentas são úteis para obter uma rápida compreensão de códigos diferentes? Existe alguma ferramenta que possa fornecer uma "imagem geral" do caminho crítico do código e me permitir detalhar os detalhes de qualquer parte?
tools
code-reviews
source-code
maintenance
Drew Dormann
fonte
fonte
Respostas:
A melhor coisa, é claro, é que alguém que conhece a base de código o guie por ela. Se isso não for uma opção, existem algumas ferramentas que podem ajudá-lo.
Geralmente, você também deseja usar um IDE completo, onde pode clicar com o botão direito do mouse em qualquer coisa e "ir para a definição". Isso pode economizar muito tempo, comparado ao uso de grep em muitos arquivos em uma estrutura de diretórios complexa.
Outra coisa importante, dependendo de quanto tempo você terá que lidar com o código. Se houver testes de unidade, verifique os testes. Se não houver testes, comece a escrevê-los. Forme uma hipótese sobre o que uma classe ou função específica faz e escreva um teste para testá-lo. Isso requer muita disciplina, mas é uma ótima maneira de obter respostas sobre o que está acontecendo no código.
fonte
Essa é uma abordagem mais drástica. Essa técnica pode ser útil para um projeto que possui muitas classes que não estão organizadas em espaços para nome significativos.
O objetivo deste exercício é descobrir o relacionamento de classe. Faça um clone descartável do projeto e tente colocar algumas classes nos namespaces. Para economizar tempo em tentativas repetidas, use algumas ferramentas de processamento de arquivo Regex para automatizar essa alteração.
Isso causará muitos erros do compilador. No processo de correção desses erros, será possível entender melhor como essas classes dependem umas das outras e decidir quais classes podem ser colocadas no mesmo espaço para nome.
Essa técnica é útil, pois é possível aplicá-la mesmo com pouco entendimento da organização do código do projeto. Com isso, corre-se o risco de que algumas classes possam ser extraviadas por essa técnica devido a mal-entendidos.
fonte