Devloger

Czysty Kod - Tylko Jeden Poziom Indentacji

Jeden Poziom Indentacji

Czysty Kod - Tylko jeden poziom indentacji (logo, obrazek)

Kolejna zasada która niezmiernie może poprawić jakość naszego kodu Emotikon uśmiechniętej buźki. Stosujmy tylko jeden poziom indentacji na metodę Emotikon uśmiechniętej buźki.

Czy to ma sens?

Co w przypadku gdy wykonujemy pętlę w pętli? Przecież wtedy mamy już aż trzy poziomy indentacji. Więc ta zasada nie jest praktyczna, prawda? Może tak, ale może nie... Emotikon uśmiechniętej buźki

Przykład słabego kodu

public function filterBy($accountType)

{
    $filtered = [];
    // 0
    foreach($this->accounts as $account)
    {
        // 1
        if($account->type() === $accountTypen)
        {
            // 2
            if($account->active())
            {
                // 3
                $filtered[] = $account;
            }
        }
    }
}

W powyższym przykładzie mamy 3 poziomy indentacji... A to przecież bardzo prosta metoda! Stać nas na więcej Emotikon uśmiechniętej buźki.

Często tak wiele poziomów indentacji (szczególnie w tak prostej metodzie) jest wskazówką dla nas, że przydałoby się tutaj wyabstrahować co nieco Emotikon uśmiechniętej buźki.

Jak to zrobić?

Należy skupić się wtedy na miejscu w którym mamy zagnieżdżenie. Następnie należy rozpracowywać to od środka aż do zewnątrz - pozbywając się nadmiarowych indentacji.

Mamy wiele opcji na poradzenie sobie z tym problemem.

Łączenie warunków

Korzystajmy z możliwości łączenia warunków - mamy przecież operatory logiczne. Nie stosujmy zagnieżdżonych warunków kiedy możemy wyjść zwycięsko z jednym warunkiem.

Ale przecież to brzydko wygląda i ciężko się czyta... To prawda. Musimy czytać, parsować (w głowie), myśleć... tracimy cenny czas i energię.

Jaka rada? Możemy dla przykładu wyodrębnić ten kod do osobnej metody z ładną, czytelną i opisową nazwą Emotikon uśmiechniętej buźki. Wówczas nawet komentarz do kodu (jeśli by był) staje się zbędny Emotikon uśmiechniętej buźki. Jest to znak, że jesteśmy na dobrej drodze. Mamy czytelną metodę, która dokładnie opisuje co tak naprawdę sprawdzamy. Dodatkowo kod ten jest teraz reużywalny - super.

Wykorzystywanie natywnych funkcji języka

Dla przykładu - pętla foreach nie jest akurat w tym przypadku dobrym wyborem. Może zamiast tego powinniśmy użyć natywnej funkcji języka php do filtrowania tablic Emotikon uśmiechniętej buźki? W końcu dokładnie po to została ona stworzona.

public function filterBy($accountType)
{
    return array_filter($this->accounts, function($account) use ($accountType)
    {
        return $account->isOfType($accountType);
    });
}

Spójrz teraz. Wynik jest ten sam. Osiągnęliśmy dokładnie to samo. Ale mamy dokładnie jeden poziom indentacji, gdzie na początku mieliśmy aż trzy! Poprawiliśmy znacząco design i czytelność naszego kodu Emotikon uśmiechniętej buźki.

A wyobraź sobie, gdybyśmy mieli w poprzednim przykładzie słabego kodu dodatkowo warunki else, gdzie nasza logika by się rozgałęziała... A to wszystko ma tendencję do rozrostu. Za kilka miesięcy będziesz miał problem z czytaniem i analizowaniem takiego kodu. A co z innymi ludźmi? No właśnie... Taki kod jest niestety bardzo trudny do zrozumienia (w stosunku do wersji po refaktoryzacji).

Drobna uwaga

Kod, który wcześniej wyodrębniliśmy do osobnej metody, powinniśmy zamiast tego zastosować w modelu. To obowiązek modelu, by nam mówić, czy ma taki stan czy inny. Dodatkowo zyskujemy dużo większą elastyczność oraz reużywalność kodu. Oraz bardziej stosujemy się do dobrych praktyk i zasad programowania. Pozbywamy się również poprzednich metod w modelu z publicznego interfejsu - teraz są zbędne. A czym były? Jedynie ładnie nazwanymi getterami.

Powinniśmy pytać model zamiast wysyłać mu wiele żądań, by nam coś zwrócił byśmy sprawdzali to na własną rękę Emotikon uśmiechniętej buźki.

Podsumowując

Stosujmy jeden poziom indentacji per metodę Emotikon uśmiechniętej buźki. Warto stosować się do tej zasady, ponieważ prowadzi ona nas do bardzo wielu zalet. Reużywalność, SRP, design, OCP... Jednym słowem - pozwala nam poprawić jakość naszego kodu Emotikon uśmiechniętej buźki.

Kończąc

Dziękuję ci za lekturę tego artykułu drogi czytelniku mojego bloga Emotikon uśmiechniętej buźki. Jeśli uważasz, że ten artykuł był dla ciebie jakkolwiek przydatny i wyciągnąłeś z niego choć odrobinę wartości, to proszę podziel się nim z innymi oraz zostaw komentarz Emotikon uśmiechniętej buźki. Daj znać co o nim sądzisz Emotikon uśmiechniętej buźki.

Zapraszam cię również do lektury innych moich artykułów Emotikon uśmiechniętej buźki. Szczególnie tych dotyczących refaktoryzacji oraz zasad/reguł/rad odnośnie programowania Emotikon uśmiechniętej buźki.

A tymczasem życzę ci dobrego dnia, bywaj!

Krystian Bogucki

Podobał Ci się ten artykuł?

Jeśli tak, to zarejestruj się aby otrzymywać powiadomienia o nowych artykułach. Nie ujawnię nikomu Twojego adresu!