Jestem pewien, że istnieje gdzieś nazwa tego anty-wzoru; jednak nie znam wystarczająco literatury anty-wzorcowej, aby ją poznać.
Rozważ następujący scenariusz:
or0jest funkcją członka w klasie. Na lepsze lub gorsze, w dużym stopniu zależy to od zmiennych członków klasy. Programator A pojawia się i potrzebuje funkcji, or0ale zamiast wywoływania or0, programista A kopiuje i zmienia nazwę całej klasy. Zgaduję, że ona nie dzwoni, or0ponieważ, jak mówię, jej funkcjonalność jest silnie zależna od zmiennych składowych. A może jest młodszym programistą i nie wie, jak to wywołać z innego kodu. Więc teraz mamy or0i c0(c dla kopii). Nie mogę całkowicie winić programisty A za to podejście - wszyscy mamy napięte terminy i włamujemy się do kodu, aby wykonać pracę.
Wielu programistów utrzymuje, or0więc jest to teraz wersja orN. c0jest teraz wersją cN. Niestety większość programistów, którzy utrzymywali zawieranie klas, or0wydawała się zupełnie nieświadoma - c0co jest jednym z najsilniejszych argumentów, jakie mogę wymyślić dla mądrości zasady DRY. I może istnieć także niezależne utrzymanie kodu w c. Tak czy inaczej wydaje się, że or0i c0były utrzymywane od siebie niezależne. I, radość i szczęście, pojawia się błąd cN, który nie występuje w orN.
Mam więc kilka pytań:
1.) Czy istnieje nazwa tego anty-wzoru? Widziałem to tak często, że trudno mi uwierzyć, że to nie jest nazwany anty-wzór.
2.) Widzę kilka alternatyw:
a.) Napraw, orNaby pobrać parametr określający wartości wszystkich potrzebnych zmiennych składowych. Następnie zmodyfikuj, cNaby zadzwonić orNze wszystkimi potrzebnymi parametrami przekazanymi.
b.) Spróbuj ręcznie przenieść poprawki od orNdo cN. (Pamiętaj, że nie chcę tego robić, ale jest to realistyczna możliwość).
c.) Skopiuj ponownie orNdo - cNznowu, fuj, ale wymieniam to ze względu na kompletność.
d.) Spróbuj dowiedzieć się, gdzie cNjest zepsuty, a następnie napraw go niezależnie od orN.
Alternatywa a wydaje się najlepszym rozwiązaniem na dłuższą metę, ale wątpię, czy klient pozwoli mi ją wdrożyć. Nigdy nie masz czasu ani pieniędzy, aby naprawić problem, ale zawsze masz czas i pieniądze, aby naprawić ten sam problem 40 lub 50 razy, prawda?
Czy ktoś może zasugerować inne podejścia, których mogłem nie brać pod uwagę?
