... o których każdy programista
wiedzieć powinien.

Zawsze słuchaj ekspertów. Oni powiedzą ci, czego nie da się zrobić i dlaczego. A ty potem to zrób.
-- Robert Heinlein
Mike Lewis

Nie bój się psuć

Oryginalny tytuł: Don't Be Afraid to Break Things

Autor: Mike Lewis

Każdy w branży bez wątpienia pracował nad kodem, który był co najmniej niepewny. System jest kiepsko zorganizowany, a zmiana jednej rzeczy oznacza zepsucie jakiejś zupełnie innej. Zawsze kiedy dodaje się moduł, pierwszorzędnym celem jego twórcy jest zmiana jak najmniejszej części kodu, a potem wstrzymywanie oddechu podczas każdego wypuszczenia produktu. Jest to programistyczny odpowiednik grania w Jenga kształtownikami w wieżowcu, musi się skończyć katastrofą.

Powodem, dla którego dokonywanie zmian tak niszczy nerwy, jest choroba systemu. Potrzebuje on lekarza, inaczej jego stan się tylko pogorszy. Gdy już wiesz, co mu dolega, boisz się zbić kilka jajek, żeby zrobić omlet. Chirurg wie, że trzeba zrobić nacięcie, żeby móc przeprowadzić operację, ale wie też, że są one tymczasowe i się zagoją. Końcowy rezultat operacji jest wart początkowego bólu a stan pacjenta w ostatecznym rozrachunku będzie lepszy niż przed zabiegiem.

Nie bój się o swój kod. Kogo obchodzi, jeżeli coś się tymczasowo zepsuje, podczas gdy przesuwasz rzeczy? Paraliżujący strach jest tym, co doprowadziło Twój projekt do obecnego stanu. Inwestowanie czasu w refaktoryzację zwróci się kilkukrotnie podczas całego cyklu życia projektu. Posiadasz tę przewagę, że zespół ma doświadczenie w obsłudze chorego systemu, co sprawia, że jesteście ekspertami od tego, jak powinien działać. Skorzystaj z tej wiedzy, a nie odrzucaj. Praca nad czymś, czego się nienawidzi, nie jest czynnością, na którą ktokolwiek powinien marnować czas.

Przedefiniuj wewnętrzne interfejsy, zmień strukturę modułów, refaktoryzuj kod powstały przez kopiuj–wklej, uprość projekt, żeby ograniczyć zależności. Możesz znacząco zredukować złożoność kodu poprzez wyeliminowanie patologicznych przypadków, które często są rezultatem źle dopasowanych elementów. Powoli przechodź od starej struktury do nowej, testując po drodze. Próba przeprowadzenia ogromnej refaktoryzacji w jednym wielkim skoku spowoduje dość problemów, abyś zaczął się zastanowić nad porzuceniem całego przedsięwzięcia.

Bądź chirurgiem, który nie boi się wyciąć chorych partii, żeby pozwolić na leczenie. Nastawienie jest zaraźliwe i zainspiruje innych do rozpoczęcia prac nad uporządkowaniem projektów, które zawsze odkładali na później. Zrób "higieniczną" listę zadań, które zespół uważa za wartościowe dla dobra projektu. Przekonaj kierownictwo, że nawet jeżeli to, co teraz robisz nie przyniesie widocznych rezultatów, zredukuje późniejsze koszty i przyspieszy wydawanie nowych wersji. Nigdy nie przestawaj przejmować się "zdrowiem" kodu.

Creative Commons Uznanie Autorstwa 3.0 Artykuł został opublikowany na licencji Creative Commons Uznanie Autorstwa 3.0.
Tłumaczenie: Yelonek

Komentarze (1)

lamer pisze:
16-03-2011 12:19:35
A robiąc to, stosuj system kontroli wersji, który zapewni Ci mechanizm 'undo' i możliwość rozpoczęcia refaktoru jeszcze raz. Projekt realizowany przyrostowo (gdy pierwsza wersja jest bardzo prosta, a w kolejnych przybywa funkcjonalności nie planowanych na początku) nie ma szans być zaprojektowany od razu 'idealnie'. W moich własnych projektach z wersji na wersję wyłaniają się nieprzewidzianie biblioteki oraz moduły, o których wcześniej nie myślałem, gdyż realizowane przez nie funkcje były małe i w ogóle nie rzucały się w oczy. Nagle zmieniają się w interfejsy, hierarchie klas, polimorficzne użycie, a czasem wręcz dynamiczne wtyczki. Dzięki nowoczesnym narzędziom programistycznym bez problemu wydziela się takie rzeczy, zastępuje dotychczasowe proste rozwiązania bardziej zaawansowanymi, a wszystko to wiedząc, że w razie czego będzie dostępny przycisk 'revert' :-)

Dodaj komentarz

*
 
 
*
*