Adaptywny kod. Zwinne programowanie wzorce projektowe i SOLID-ne zasady – Gary McLean Hall

przez Karol Bocian | 1 października, 2022
Adaptywny kod. Zwinne programowanie wzorce projektowe i SOLID-ne zasady - Gary McLean Hall

Przeczytałem ostatnio kolejną książkę. W tym wpisie dzielę się informacjami, które w niej znalazłem oraz które wdrożyłem w swoim życiu. Staram się z każdej książki wdrażać minimum jedną rzecz.

Wdrożyłem:

  1. Definiowanie interfejsu i jego implementacji w oddzielnych modułach.

Notatki:

Instrukcja new jest zapachem kodu. Tworzy jawną zależność. Lepiej jest wstrzyknąć klasę i operować na interfejsie.

Aspekty (programowanie aspektowe) są doskonałym narzędziem umożliwiającym implementację zagadnień przecinających (np. logowania danych wejściowych i wyniku każdej metody).

Wzorce projektowe

Wzorzec Zerowy Obiekt jest bardzo ciekawym wzorcem. Pozwala uniknąć wielu sprawdzeń czy dany obiekt jest Nullem.  Należy unikać jednak pewnego antywzorca, którym jest Dodanie metody IsNull.

Wzorzec Adapter pozwala udostępnić klasę klientowi w postaci interfejsu, którego ta klasa nie implementuje.

Wzorzec Strategia daje możliwość zmieniania działania klasy w zależności od ustawień.

Testy

Buduj testy składające się z trzech etapów:

  1. Arrange — przygotowanie.
  2. Act — wykonanie (tylko jednego działania).
  3. Assert — sprawdzenie (tylko jednej rzeczy).

TDD — Test Driven Development

  1. Czerwone — utworzenie testu.
  2. Green — implementacja metody.
  3. Refactor — poprawienie kodu.

Wyjątki z warstwy niższej powinny być opakowywane przez aktualną warstwę, aby nie wyciekły do wyższej warstwy (nie było wycieku abstrakcji).

Nazwy

Nazywaj zwięźle i czytelnie obiekty, zmienne i metody. Jeżeli nie wiesz jak coś nazwać, nazwij to np. XXXXXXXXXXXX, a po napisaniu kodu i poznaniu lepiej domeny, będziesz miał większą wiedzę, aby nazwać dobrze daną rzecz.

Refaktoryzacja

  • Zapisuj magiczne liczby jako stałe lub zmienne konfiguracyjne.
  • Zastąp wyrażenia warunkowe polimorfizmem.
  • Zastąp konstruktor metodą fabryczną.
  •  Zastąp konstruktor klasą fabryczną.
  •  Zastąp dziedziczenie delegowaniem.

Technika Złotego Wzorca (testy charakteryzujące)

Jeżeli nie masz testów i nie znasz danych wejściowych oraz wejściowych dla pewnej metody, a chcesz ją poprawić, to możesz skorzystać z techniki złotego wzorca.  Na produkcji zacznij zapisywać dane wejściowe do danej metody oraz dane wyjściowe.  Następnie wykorzystaj to dane do zrobienia testów.  Poprawiaj swoją metodę.  Jeżeli w pewnym momencie Twoja poprawiona metoda zacznie zwracać coś innego, niż zwracała do tej pory, a dowiesz się tego na podstawie danych, które zabrałeś wcześniej, to będziesz wiedział, że ją zepsułeś. Tym sposobem będzie Ci łatwiej naprawić działanie metody i zrozumieć ją.

SOLID

  • Zasada pojedynczej odpowiedzialności.
    • Ta zasada pozwala tworzyć klasy, które można zmieniać tylko z jednego powodu.  Jeżeli klasa ma kilka powodów do zmiany, należy ją podzielić.
    • Wzorzec Dekorator i Kompozyt przydają się w stosowaniu zasady pojedynczej odpowiedzialności.
  • Zasada „Otwarty/Zamknięty”:
    • Elementy oprogramowania powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje.
      •  Można oczywiście wprowadzać zmiany usuwające błędy.
  •  Zasada podstawienia Liskov:
    •  Należy tworzyć taką hierarchię klas, aby kod kliencki mógł korzystać z dowolnej klasy nadrzędnej bez zakłócenia swojego działania.
  • Segregacja interfejsów:
    • Klienci nie powinni zależeć od interfejsów, których nie używają. Interfejsy powinny być małe.
  • Odwracanie zależności:
    • Moduły wysokopoziomowe nie powinny zależeć od niskopoziomowych. Abstrakcja nie powinna zależeć od szczegółów.
      • Umieszczaj interfejs w innym pakiecie niż jego implementacja.
      • Wzorzec Schody umożliwia uporządkowanie interfejsów oraz implementacji i sprawienie, że klient zależy tylko od jednego interfejsu.

Wszystkie posty związane z książkowymi wdrożeniami:

Źródła

Obraz główny

  • Praca własna

Materiały

  • Adaptywny kod. Zwinne programowanie wzorce projektowe i SOLID-ne zasady – Gary McLean Hall

Linki oznaczone (*) są linkami afiliacyjnymi. Jeżeli uważasz, że czerpiesz korzyści z mojej pracy, to kup coś korzystając z powyższego linku. Sprawi to, że dostanę prowizję z afiliacji.

Kategoria: Książkowe wdrożenia Tagi: agile, it, programowanie, SOLID, wzorce projektowe, zzwinny

O Karol Bocian

Programowanie i świat agentów programowalnych, który poznał na Wydziale Matematyki i Nauk Informacyjnych, wciągnął go w przemysł IT. W trakcie swojej praktyki zawodowej Karol zrozumiał, że nie ważne co się robi i kim się jest, ale wiedza z zarządzania przydaje się wszędzie. Rozpoczął studia na kierunku Zarządzanie i Inżyniera Produkcji. W przypadku Karola zarządzanie to nie tylko teoria czy praca, ale prawie każdy element jego życia, to jego pasja.