Śmieci w kodzie

Często, kiedy przyjdzie nam się zmierzyć z aplikacją, tworzoną przez całe pokolenia programistów, można napotkać wiele fragmentów dawno nieużywanego kodu, pozostawionego przez kogoś w bliżej nieokreślonym celu. Często ten kod sobie tak wisi, zawieszony w czasoprzestrzeni, mijany z obojętnością przez kolejnych programistów, w oczekiwaniu na ten magiczny moment kiedy wreszcie okaże się znów przydatny.

Praktyka jednak pokazuje, że prawie nigdy nie zostaje on ponownie wykorzystany, a jedyne co robi to zaciemnia właściwy kod i zwiększa rozmiary klas, które i tak najczęściej są dużo za duże. Mogą to być zakomentowane całe bloki kodu (tu pisałem więcej O komentarzach w kodzie), nieużywane metody i zmienne prywatne, czy jakieś zupełnie abstrakcyjne fragmenty kodu, jak ta metoda, którą ostatnio znalazłem w kodzie produkcyjnym:

wtf

 

Widząc coś takiego, po chwili oszołomienia zazwyczaj pada (cytując klasyka) „jedno zajebiście ważne pytanie”: What the fuck?! Tu, żeby było ciekawiej, metoda jest publiczna więc jej usunięcie nie jest już takie bezpieczne. Nigdy nie wiadomo co może się sypnąć po usunięciu tak zaawansowanego algorytmu 😉

Tu inny przykład tego typu kodu, ale w tym przypadku akurat nie miałem serca usuwać takiej perełki 😀

wtf2

 

Aby pozbyć się śmieci z kodu wcale nie trzeba wiele. Nie musimy nawet wkładać wysiłku w ich zlokalizowanie. Wiele narzędzi (np. ReSharper) robi to za nas, specjalnie oznaczając niewykorzystywane zmienne czy metody prywatne. Jedyne co trzeba zrobić to po prostu je usunąć. Nie mamy nic do stracenia, poza kilkoma, a czasem kilkuset linijkami śmieci. Jeżeli ktoś zostawił to celowo i będzie jakimś cudem jednak tego potrzebował to odgrzebie sobie to w repozytorium, po to ono jest.

Czasem jednak mam wrażenie, że z zaśmieconym kodem jest podobnie jak ze zwykłymi śmieciami w życiu. Nikt nie lubi żyć w brudzie, ale też nikomu nie chce się schylić po papierek. A czasem może tak jesteśmy do nich przyzwyczajeni, że nawet nie zwracamy na nie uwagi?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *