Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SOLIDny kod

SOLIDny kod

Programowanie nie jest tylko zwykłym "klepaniem kodu". Tworzenie oprogramowania wymaga od programistów wysokiej samodyscypliny i wielu umiejętności pozwalających na pisanie solidnego kodu. Jednym z wielu kroków do pisania dobrego kodu jest poznanie zasad S.O.L.I.D., które postaram się krótko omówić i przedstawić na przykładach.

Rafał Muszyński

April 27, 2017
Tweet

More Decks by Rafał Muszyński

Other Decks in Technology

Transcript

  1. SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 KILKA SŁÓW

    O MNIE ▸ programista PHP i Scrum Master w Sourcefabric z.u. ▸ kontrybutor open-source ▸ założyciel portalu siedlceonline.pl ▸ rafalmuszynski.pl @takeittt
  2. SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 AGENDA ▸

    S - Zasada pojedynczej odpowiedzialności (SRP) ▸ O - Zasada otwarte-zamknięte (OCP) ▸ L - Zasada podstawienia Liskov (LSP) ▸ I - Zasada segregacji interfejsów (ISP) ▸ D - Zasada odwrócenia zależności (DIP)
  3. SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 CO TO

    SĄ ZASADY S.O.L.I.D.? ▸ mnemonik ▸ są to zasady, nie prawa! ▸ zasady projektowania obiektowego ▸ jest ich tylko pięć ▸ zostały zdefiniowane przez Uncle Boba
  4. SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 ROBERT C.

    MARTIN ▸ twórca zasad S.O.L.I.D. ▸ inżynier oprogramowania ▸ znany jako „Uncle Bob” ▸ prelegent, populyzator pisania czystego kodu ▸ twórca bestsellerowej książki „Clean Code” - „Czysty kod” ▸ cleancoder.com
  5. SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 PO CO

    JE STOSOWAĆ? ▸ łatwe pisanie testów (TDD/BDD) ▸ eliminacja duplikacji ▸ rozdzielanie zależności ▸ szybkie i łatwe rozszerzanie kodu o nowe feature-y ▸ w rezultacie czytelniejszy i wydajniejszy kod ▸ brak konieczności refaktoryzacji kodu
  6. A CLASS SHOULD HAVE ONE, AND ONLY ONE, REASON TO

    CHANGE. Uncle Bob ZASADA POJEDYNCZEJ ODPOWIEDZIALNOŚCI (SRP)
  7. SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 S -

    ZASADA POJEDYNCZEJ ODPOWIEDZIALNOŚCI ▸ jedno zadanie klasy ▸ czyli klasa powinna mieć jeden powód do zmiany
  8. YOU SHOULD BE ABLE TO EXTEND A CLASSES BEHAVIOR, WITHOUT

    MODIFYING IT. Uncle Bob ZASADA OTWARTE/ZAMKNIĘTE (OCP)
  9. SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 O -

    ZASADA OTWARTE/ZAMKNIĘTE ▸ klasa powinna być otwarta na rozszerzenia ▸ a zamknięta na wszelkie modyfikacje ▸ klasa powinna być łatwo rozszerzalna
  10. SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 L -

    ZASADA PODSTAWIENIA LISKOV ▸ „Funkcje które używają wskaźników lub referencji do klas bazowych, muszą być w stanie używać również obiektów klas dziedziczących po klasach bazowych, bez dokładnej znajomości tych obiektów” - Wikipedia ▸ każda podklasa/klasa pochodna powinna rozszerzać funkcjonalność klasy bazowej a nie ją zmieniać ▸ „czasami coś, co brzmi dobrze w języku naturalnym, nie działa w kodzie” - Uncle Bob
  11. SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 I -

    ZASADA SEGREGACJI INTERFEJSÓW ▸ zależności między klasami powinny opierać się na kontraktach (dzięki interfejsom) ▸ klasa nie powinna nigdy implementować interfejsu, którego nie używa ▸ czyli klasa nie powinna implementować metod, których nigdy nie będzie potrzebowała
  12. SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 D -

    ZASADA ODWRÓCENIA ZALEŻNOŚCI ▸ klasy mają być zależne od abstrakcji nie od konkretnych implementacji ▸ wysokopoziomowe moduły nie powinny zależeć od modułów niskopoziomowych ▸ pomaga w rozdzielaniu zależności ▸ nie stosowanie jej łamie zasadę OCP ▸ zasada ta idealnie wpasowuje się we wzorzec Factory Method