Code Smells: Nieużywany kod

Niepotrzebny kod Dzisiejszy wpis nie będzie długi, ani nie będzie zawierał żadnych przykładów – wszystko to z racji małej złożoności poruszanego problemu. Nie mniej nieużywany kod jest jednym z bardziej powszechnych code smells’ów zwłaszcza w długo utrzymywanych, bądź rozwijanych projektach. Dlaczego tak się dzieje? Kiedyś, gdy nie było tak rozbudowanych IDE jak dziś, programiści musieli poświęcać […]

Code Smells: Pole tymczasowe

Kolejnym, może rzadziej spotykanym przykładem degeneracji kodu jest pole tymczasowe (ang. temporary field). Spotykamy się z nim wówczas gdy w obrębie klasy istnieje pole, które jest wykorzystywane tylko przy pewnych warunkach lub okolicznościach. Gdy te warunki nie są spełnione pole ma, przez cały cykl życia klasy, wartość domyślną. Popatrzmy na banalny przykład:

  Podstawowym problemem […]

Code Smells: skomplikowane instrukcje warunkowe

Kolejnym problemem z którym przyjdzie się nam mierzyć jest nadmierna złożoność instrukcji warunkowych. Jest to często przejaw programowania nie-do-końca zorientowanego obiektowo. Zwłaszcza gdy występuje w świeżym kodzie. W kodzie zastanym jest zjawiskiem tyle niepożądanym przez “utrzymywaczy” co powszechnym. I niestety rzadko kiedy jest refaktoryzowany, nie koniecznie z powodu lenistwa programistów ale z racji sztywnych powiązań […]

Code Smells: Duplikacja kodu

Duplikacja kodu jest problemem o tyle prostym do zauważenia co powszechnym. Dla mnie jest też jednym z najprzyjemniejszych problemów w refaktoryzacji. Lubię patrzeć jak kod chudnie w oczach :). Czym jest powielany kod tłumaczyć nikomu nie trzeba. Zajmijmy się więc określeniem dlaczego jest niepożądany.  Piękna w swej prostocie zasada Don’t Repeat Yourself (DRY) zaleca ogólną eliminację powtarzających […]

Code Smells: (Zbyt) Duże klasy

Problem ze zbyt rozbudowanymi klasami występuje powszechnie w kodzie zastanym. Rzadko kiedy klasa tuż po commicie jest ogromna w sensie liczby linii kodu. Często wskutek zmian robionych już później, w ‘utrzymaniu’, przybiera na wadze. Nie znaczy to, że nie można od początku napisać klasy źle bo wciąż zdarzają się programiści którzy całą logikę aplikacji zamykają […]

Code Smells: Długa lista parametrów

Ostatnio było o funkcjach więc pociągnę ten temat nieco dalej. Do Code Smells jest zaliczana długa lista parametrów podawanych do delikwentki. Dlaczego? Ameryki raczej nie odkryję gdy napiszę że łatwiej przeczytać i zrozumieć sygnaturę metody zawierającej dwa parametry niż tej z dwunastoma. Więc jak zwykle chodzi o czytelność, to jednak nie koniec. Długie listy parametrów […]

Code Smells: (Zbyt) Długie metody

Na wstępie chciałbym zaznaczyć, że poniższy wpis dotyczy zarówno funkcji, procedur jak i metod, ale dla uproszczenia będę używał tylko pojęcia metody. Kiedy mówi się o zbyt długiej metodzie? Definicji tyle ilu twórców – jedni twierdzą, że 15 linii to nadmiar, inni że 30, jeszcze inni mówią że dopuszczalną granicą jest tzw. jeden ekran lub […]

Komentarze, czyli z pogranicza Code Smells

W każdym (przynajmniej tak mi się wydaje) języku programowania, jest możliwość wstawiania komentarzy do swojego kodu. Kiedyś, zwłaszcza w językach niższego poziomu, powszechnie stosowało się komentarz jako narzędzie do objaśniania konkretnej linii kodu. Dzisiaj często komentujemy w celach dokumentowania (tak jak dokumentacja XML w C#). Codziennie można spotkać komentarz w gąszczu instrukcji warunkowych lub zagnieżdżonych pętli. […]

Code Smells i ich refaktoryzacja – wstęp

Tak jak kaszel może być objawem poważnej choroby (który nie sprawia jednak wrażenia niczego poważnego) tak są pewne pozornie nie groźne, objawy problemów rodzących się, lub mocno już rozwiniętych, w systemie nad którym pracujemy. Sam termin Code Smells został ukuty przez Kenta Becka i jak sama nazwa wskazuje oznacza woń rozkładu naszego kodu :).  Tak jak […]