Slide 1

Slide 1 text

SOLIDNY KOD PODLASIE.DEV - SIEDLCE - 27.04.2017 RAFAŁ MUSZYŃSKI

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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)

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

S - ZASADA POJEDYNCZEJ ODPOWIEDZIALNOŚCI (SRP)

Slide 9

Slide 9 text

A CLASS SHOULD HAVE ONE, AND ONLY ONE, REASON TO CHANGE. Uncle Bob ZASADA POJEDYNCZEJ ODPOWIEDZIALNOŚCI (SRP)

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 SRP - PRZYKŁAD

Slide 12

Slide 12 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 SRP - PRZYKŁAD CD.

Slide 13

Slide 13 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 SRP - PRZYKŁAD CD.

Slide 14

Slide 14 text

O - ZASADA OTWARTE/ ZAMKNIĘTE (OCP)

Slide 15

Slide 15 text

YOU SHOULD BE ABLE TO EXTEND A CLASSES BEHAVIOR, WITHOUT MODIFYING IT. Uncle Bob ZASADA OTWARTE/ZAMKNIĘTE (OCP)

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 OCP - PRZYKŁAD CD.

Slide 18

Slide 18 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 OCP - PRZYKŁAD CD.

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

L - ZASADA PODSTAWIENIA LISKOV (LSP)

Slide 21

Slide 21 text

DERIVED CLASSES MUST BE SUBSTITUTABLE FOR THEIR BASE CLASSES. Uncle Bob ZASADA PODSTAWIENIA LISKOV (LSP)

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 LSP - PRZYKŁAD CD.

Slide 24

Slide 24 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 LSP - PRZYKŁAD CD.

Slide 25

Slide 25 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 LSP - PRZYKŁAD CD.

Slide 26

Slide 26 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 LSP - PRZYKŁAD CD.

Slide 27

Slide 27 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 LSP - PRZYKŁAD CD.

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

I - ZASADA SEGREGACJI INTERFEJSÓW (ISP)

Slide 30

Slide 30 text

MAKE FINE GRAINED INTERFACES THAT ARE CLIENT SPECIFIC. Uncle Bob ZASADA SEGREGACJI INTERFEJSÓW (ISP)

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 ISP - PRZYKŁAD CD.

Slide 33

Slide 33 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 ISP - PRZYKŁAD CD.

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

D - ZASADA ODWRÓCENIA ZALEŻNOŚCI (DIP)

Slide 36

Slide 36 text

DEPEND ON ABSTRACTIONS, NOT ON CONCRETIONS. Uncle Bob ZASADA ODWRÓCENIA ZALEŻNOŚCI (DIP)

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 DIP - PRZYKŁAD CD.

Slide 39

Slide 39 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 DIP - PRZYKŁAD CD.

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 KIEDY STOSOWAĆ? ZAWSZE! … kiedy jest to możliwe

Slide 42

Slide 42 text

SOLIDNY KOD - PODLASIE.DEV - SIEDLCE - 27.04.2017 A TYMCZASEM KLIENT…

Slide 43

Slide 43 text

DZIĘKUJĘ muszynskirafa@gmail.com