Niezwykle ważną kwestią w procesie wytwarzania oprogramowania jest jakość samego kodu. Jeśli jest on napisany we właściwy sposób, wtedy implementacja aplikacji przebiega zazwyczaj bez opóźnień i większych problemów.
W społeczności IT funkcjonuje określenie clean code, oznaczające kod, który jest łatwy do zrozumienia oraz łatwy do zmodyfikowania. W niniejszym artykule przyjrzymy się dobrym praktykom, które prowadzą do tworzenia kodu charakteryzującego się tymi cechami.
Clean code – łatwy do zrozumienia i zmodyfikowania, czyli jaki?
Przyjrzyjmy się bliżej składowym tego pojęcia. Co właściwie oznacza określenie łatwy do zrozumienia? Chodzi o kod, z którego interpretacją nie będzie miał problemów ani jego twórca, ani inny programista, który zajmie się jego analizą.
W tej sytuacji zminimalizowaniu ulega możliwość pomyłki w interpretacji oraz domyślania się, o co chodziło autorowi. W tym przypadku, programista powinien być w stanie z łatwością rozumieć m. in. przebieg procesów w aplikacji, zadania realizowane przez daną klasę, czy też sposób współpracy między różnymi obiektami.
Nieformalna definicja z pierwszego akapitu wymienia także inną charakterystykę clean code, a mianowicie łatwość modyfikowania.
Kod charakteryzujący się tą cechą daje się rozszerzać (dodawanie nowych funkcjonalności) oraz refaktoryzować (modyfikacje niezmieniające samej funkcjonalności aplikacji, ale np. podnoszące jakość kodu).
Ważnym elementem projektu w tym przypadku jest obecność testów jednostkowych, które – uruchamiane po wprowadzeniu zmiany – zweryfikują, czy dana modyfikacja nie spowodowała wystąpienia błędu w którymś obszarze aplikacji.
H2 Clean code – najważniejsze praktyki
Rozważając dobre praktyki tworzenia kodu, zacznijmy od tych najbardziej elementarnych – występujących na najniższym poziomie skomplikowania.
Jedną z takich kwestii jest nazewnictwo zmiennych, funkcji, klas oraz innych bytów programistycznych. Nazwa powinna określać, w jakim celu istnieje, co robi i w jaki sposób jest używana. Powinna ona również często być zbudowana inaczej językowo w zależności od tego, jaki byt określa (czyli np. dla klas stosowane rzeczowniki, dla metod i funkcji natomiast – czasowniki).
Ważnym elementem w podejściu clean code jest również dbałość o poprawne formatowanie. Prawidłowo sformatowany kod można łatwo czytać – nawet wielokrotne zagnieżdżenia są wtedy łatwe do zlokalizowania i zinterpretowania. Odpowiednie formatowanie kodu jest szczególnie łatwe w dobie współczesnych edytorów programistycznych, w których zadanie to często sprowadza się do użycia jednego skrótu klawiaturowego.
Kolejną istotną kwestią jest stosowanie się do reguły DRY – Don’t Repeat Yourself. Sprowadza się ona do unikania rzeczy, które w procesie implementacji są powtarzalne. Dotyczy to zarówno samego kodu (kopiowanie i wklejanie tego samego fragmentu kodu w różnych lokalizacjach) jak i innych działań wykonywanych przez programistę (przykładem może być ręczne kompilowanie plików SCSS po każdej zmianie).
W pierwszym przypadku należy zadbać o reużywalność kodu – np. wydzielić blok instrukcji do osobnej metody, dzięki czemu będzie mogła ona być używana w innych miejscach programu bez konieczności ciągłego wklejania tego samego fragmentu.
W drugim przypadku natomiast taką czynność należy powierzyć narzędziom automatyzującym. Dla podanego przykładu będzie to np. zastosowanie tzw. task runnera, który po każdej zmianie w plikach automatycznie skompiluje pliki SCSS.
Bardzo dobrą praktyką jest także stosowanie komentarzy. Podejście to okazuje się szczególnie owocne w przypadku zaawansowanych projektów, rozwijanych na przestrzeni miesięcy lub lat. Komentarze będą bardzo pomocne np. dla nowego członka zespołu, który dopiero wdraża się w projekt, a nawet dla twórcy kodu, którego dotyczą – ludzka pamięć bywa ulotna.
Komentarze powinny być stosowane do rzeczy, które naprawdę wymagają dodatkowego wyjaśnienia. Komentarze dotyczące kwestii oczywistych, niedostarczające żadnych nowych informacji, są uważane za zły nawyk. Nie powinno się również utrzymywać zakomentowanych fragmentów kodu.
Clean code to niewątpliwie rozległy temat, z wieloma elementami i szczegółami do zgłębienia. Rozwinięcie w sobie dobrych praktyk tworzenia kodu bez wątpienia przyczyni się do rozwoju umiejętności programistycznych. Dlatego też czas zainwestowany w „przekucie” ich w nawyk na pewno okaże się dobrą inwestycją.