Um padrão comum para localizar um bug segue este script:
- Observe a estranheza, por exemplo, nenhuma saída ou um programa suspenso.
- Localize a mensagem relevante na saída do log ou do programa, por exemplo, "Não foi possível encontrar o Foo". (O seguinte é relevante apenas se este for o caminho usado para localizar o bug. Se um rastreamento de pilha ou outras informações de depuração estiverem prontamente disponíveis, isso é outra história.)
- Localize o código onde a mensagem é impressa.
- Depure o código entre o primeiro lugar em que o Foo entra (ou deve entrar) na imagem e onde a mensagem é impressa.
Essa terceira etapa é onde o processo de depuração geralmente é interrompido porque há muitos locais no código em que "Não foi possível encontrar o Foo" (ou uma seqüência de modelo Could not find {name}
) é impressa. De fato, várias vezes um erro de ortografia me ajudou a encontrar o local real muito mais rápido do que eu faria - tornou a mensagem única em todo o sistema e, muitas vezes, em todo o mundo, resultando em um mecanismo de pesquisa relevante atingido imediatamente.
A conclusão óbvia disso é que devemos usar IDs de mensagem globalmente exclusivos no código, codificando-o como parte da sequência de mensagens e possivelmente verificando se há apenas uma ocorrência de cada ID na base de código. Em termos de manutenção, o que essa comunidade acha que são os prós e os contras mais importantes dessa abordagem, e como você implementaria isso ou garantiria que sua implementação nunca seja necessária (assumindo que o software sempre terá bugs)?