Z mojego doświadczenia wynika, że wzór jest następujący:
- System działa, często przez lata
- Zgłoszony błąd
- Deweloper bada błąd i znajduje fragment kodu, który wydaje się całkowicie wadliwy, i oświadcza, że „nigdy nie zadziałał”
- Błąd został naprawiony, a legenda o kodzie, który nigdy nie działał (ale działał przez lata), rośnie
Bądźmy logiczni tutaj. Kod, który nigdy nie zadziałałby ... nigdy nie zadziałałby . Jeśli to nie poskutkuje, to stwierdzenie jest fałszywe.
Powiem więc, że błąd dokładnie taki, jak opisano (obserwując, że wadliwy kod przestaje działać) jest ewidentnie nonsensowny.
W rzeczywistości to, co się stało, jest jedną z dwóch rzeczy:
1) Deweloper nie w pełni zrozumiał kod . W tym przypadku kod jest zwykle bałaganem i gdzieś w nim ma dużą, ale nieoczywistą wrażliwość na niektóre warunki zewnętrzne (powiedzmy konkretną wersję lub konfigurację systemu operacyjnego, która reguluje działanie niektórych funkcji w niewielki, ale znaczący sposób). Ten warunek zewnętrzny jest zmieniany (powiedzmy przez aktualizację lub zmianę serwera, która uważana jest za niepowiązaną) i powoduje to uszkodzenie kodu.
Następnie programista patrzy na kod i nie rozumiejąc kontekstu historycznego lub mając czas na prześledzenie każdej możliwej zależności i scenariusza, oświadczył, że nigdy nie zadziałałby i przepisał go.
W tej sytuacji należy zrozumieć, że idea, że „nigdy nie zadziałałoby”, jest prawdopodobnie fałszywa (ponieważ tak się stało).
Nie oznacza to, że przepisywanie jest złą rzeczą - często nie jest, chociaż miło jest wiedzieć dokładnie, co często było nie tak, co jest czasochłonne, a przepisywanie fragmentu kodu jest często szybsze i pozwala mieć pewność, że wszystko zostało naprawione.
2) Właściwie to nigdy nie zadziałało, po prostu nikt tego nie zauważył . Jest to zaskakująco powszechne, szczególnie w dużych systemach. W tym przypadku ktoś nowy zaczyna i zaczyna patrzeć na sprawy w sposób, w jaki nikt wcześniej tego nie robił, lub zmiany w procesie biznesowym, wprowadzając do wcześniejszego procesu niewielką przewagę i coś, co tak naprawdę nigdy nie działało (lub działało, ale nie wszystkie czas) został znaleziony i zgłoszony.
Deweloper patrzy na to i deklaruje, że „nigdy by to nie zadziałało”, ale użytkownicy mówią „nonsens, używamy go od lat” i mają rację, ale coś, co uważają za nieistotne (i zwykle nie wspominają, dopóki deweloper znajdzie dokładny stan, w którym punkt idą „Och tak, my zrobimy to teraz, a nie przed”) został zmieniony.
Tutaj deweloper ma rację - nigdy nie mógł działać i nigdy nie działał.
Ale w obu przypadkach jedna z dwóch rzeczy jest prawdą:
- Twierdzenie „nigdy by nie zadziałało” jest prawdziwe i nigdy nie zadziałało - ludzie po prostu tak myśleli
- Udało się, a stwierdzenie „nigdy nie mogło zadziałać” jest fałszywe i wynika z (zwykle rozsądnego) braku zrozumienia kodu i jego zależności