Wspólny wzorzec lokalizowania błędu wynika z tego skryptu:
- Obserwuj dziwność, na przykład brak wyjścia lub zawieszający się program.
- Znajdź odpowiedni komunikat w wynikach dziennika lub programu, na przykład „Nie można znaleźć Foo”. (Poniższe informacje mają znaczenie tylko wtedy, gdy jest to ścieżka podana w celu zlokalizowania błędu. Jeśli ślad stosu lub inne informacje debugowania są łatwo dostępne, to inna historia).
- Znajdź kod, w którym wiadomość jest drukowana.
- Debuguj kod między pierwszym miejscem, w którym Foo wchodzi (lub powinien wejść) na zdjęcie, a miejscem, w którym wiadomość jest drukowana.
Na trzecim etapie proces debugowania często zatrzymuje się, ponieważ w kodzie jest wiele miejsc, w których Could not find {name}
drukowane jest „Could not find Foo” (lub ciąg szablonów ). W rzeczywistości kilkakrotnie błąd pisowni pomógł mi znaleźć rzeczywistą lokalizację znacznie szybciej niż w innym przypadku - sprawił, że komunikat był unikalny w całym systemie i często na całym świecie, co spowodowało natychmiastowe trafienie w odpowiednią wyszukiwarkę.
Oczywistym wnioskiem z tego jest to, że powinniśmy używać globalnie unikatowych identyfikatorów wiadomości w kodzie, kodować na stałe jako część ciągu wiadomości i być może weryfikować, czy w bazie kodu występuje tylko jedno wystąpienie każdego identyfikatora. Jeśli chodzi o łatwość konserwacji, co zdaniem tej społeczności są najważniejsze zalety i wady tego podejścia i jak byś to wdrożył lub w inny sposób zapewniłby, że jego wdrożenie nigdy nie będzie konieczne (zakładając, że oprogramowanie będzie zawsze zawierało błędy)?