Refactoring jest fajny
Skąd taki tytuł? Jak to możliwe, że naprawianie tego co się niedawno (albo wręcz przeciwnie, bardzo dawno temu) zrobiło słabo, żeby nie powiedzieć beznadziejnie może być fajne? Ano właśnie ja postaram się w tym wpisie udowodnić, że jednak jest w tym coś fajnego.
Każdy programista prędzej czy później dojdzie do etapu refaktoryzacji swojego bądź obcego kodu. Ogólnie mówiąc refactoring służy zazwyczaj poprawie jakości i czytelności kodu, pozwala uprościć i ujednolicić niektóre fragmenty aplikacji. Pod tą nazwą nie kryje się żadne konkretne działanie, bo refaktoringiem może być podzielenie dużej klasy robiącej wszystko na kilka mniejszych odpowiedzialnych za poszczególne fragmenty. Może to też być opakowanie luźnego zbioru zmiennych w jeden model. Może to być dodanie pomocniczych metod, które pozwolą uniknąć kopiowanego kodu, itd. Tak więc jak już wspomniałem jest to po prostu zatroszczenie się o jakość tego co robimy.
Czyli chciałoby się rzec, że jest to nic innego niż pisanie kodu na nowo lub przenoszenie tego co jest w inne miejsca tym razem starając się zachować porządek i dobre praktyki programistyczne. Co więc jest tutaj fajnego? Przecież to tylko dodatkowa robota i robienie drugi raz tej samej aplikacji? Tak, jest to coś co wymaga sporo pracy, czasu i zastanowienia. Jednak jest to jeszcze coś – wskaźnik naszego rozwoju w programowaniu. Dokładnie tak. Zastanów się, kilka miesięcy temu napisałeś słaby kod, który w tamtym czasie albo wydawał Ci się okej bo taki był Twój stan wiedzy, albo w założonym terminie nie potrafiłeś napisać nic lepszego bo sądziłeś, że nie zdążysz jeśli będziesz zastanawiał się długo nad strukturą, nie masz pomysłów, a funkcjonalność ma być szybko gotowa. Teraz minęło te kilka miesięcy i widzisz błędy, których wtedy nie widziałeś, szybko zauważasz miejsca, które można poprawić, pozmieniać tak, żeby były prostsze w czytaniu, krótsze, spójniejsze. Co taka sytuacja Ci mówi? Mówi to, że przez te kilka miesięcy nauczyłeś się czegoś nowego, co daje możliwość uproszczenia kodu i sprawi, że będzie on bardziej zwięzły. Czy nie jest to cudowne? Poprawianie kodu, zwłaszcza własnego, jest dowodem na to, że się rozwijamy, uczymy nowych technik, poznajemy nowe wzorce i sztuczki. Kiedy mówisz „można to poprawić” jest też w tym zdaniu zawarte „teraz wiem więcej niż kiedy pisałem ten fragment, nauczyłem się czegoś i mogę wykorzystać tą wiedzę”. Każde stwierdzenie „jak ja mogłem takie gówno napisać?!” to dowód na to, że nie zmarnowałeś czasu i rozwijałeś się. Najlepiej to wszystko widać w przypadku początkujących koderów. Wtedy nawet z miesiąca na miesiąc chłonie się na tyle dużo nowych zagadnień, że można szybko widzieć swój postęp. Najgorsza możliwa sytuacja jest wtedy kiedy początkujący programista patrzy na swój kod z przed paru miesięcy, który jest co najmniej średni i stwierdza, że wygląda ok i nie widzi co można by tu zmienić. W takim przypadku warto się poważnie zastanowić czy proces nauki jest odpowiedni, i czy w ogóle istnieje. Warto też wtedy zapytać o opinię na temat naszego kodu innego programistę.
Sam mam teraz, poza tym co robię w pracy, jedną większą aplikację webową, którą na zamówienie rozwijam od kilku miesięcy. Kiedy zaczynałem ją tworzyć moja wiedza z zakresu technologii w niej użytych była niewielka. Teraz kiedy nauczyłem się tego i owego zaczynam refaktoryzację. I wiecie co? Sprawia mi to ogromną frajdę. Codziennie nie mogę się doczekać kiedy będę mógł siąść przy Visual Studio i zacząć hurtowo poprawiać tą słabiznę, która do tej pory powstała. Na prawdę, kiedy w plikach z kilku tysięcy linii kodu robi się maksymalnie kilkaset, a drobne zmiany czy dodanie jakiejś funkcjonalności są możliwe do zrobienia szybko i pewnie, bez próby upychania kolejnych linijek i zmiany połowy klasy po czym modlenia się czy wszystko zadziała to człowiek aż chce kodzić dalej. Zauważyłem, że dzięki temu procesowi poprawy jakości kodu aplikacja, która trochę może już się znudziła, albo zaczęła tylko denerwować znowu może zacząć być fajna, i zachęcać do poświęcania jej jeszcze kilku chwil więcej.
Czasami jest też tak, że nawet doświadczony programista musi wykonać refaktoring aplikacji. Zazwyczaj jest to spowodowane tym, że dopiero po skończeniu jakiejś części ma się obraz na całość i łatwiej zauważyć miejsca wymagające poprawek. W tym wypadku sam proces poprawiania jest lekcją, bo poznaje się kolejne przypadki, na które będziemy następnym razem lepiej przygotowani i być może uda nam się zaprojektować wszystko lepiej już przy pierwszym podejściu.
Podsumowując ten krótki wpis powiem tylko, że moim zdaniem refactoring własnego kodu, zwłaszcza w trakcie nauki programowania jest dobrym sposobem na sprawdzenie samego siebie, czy to czego się uczę przynosi efekty i potrafię rozwiązać problem, który jakieś czas temu był dla mnie ciężki, w sposób efektywniejszy i bardziej zwięzły. Poza tym kiedy widzi się, że wszystko nagle zaczyna się upraszczać to ma się ochotę dalej siedzieć nad aplikacją poprawiając ją i rozwijając.
Leave a Comment