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

SOLIDny kod

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

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.

Avatar for Rafał Muszyński

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