SlideShare ist ein Scribd-Unternehmen logo
1 von 16
SOLID vs. PHP
MICHAŁ ŁUKASZEWSKI
/LUKASZEWSKI.MICHAL
/M_LUKASZEWSKI
SOLIDny programista PHP
 Mój program działa
 Optymalnie
 Jest zgodny ze standardami
 I wzorcami?
Aby biec naucz się chodzić
 znajomość języka ("mikro optymalizacja" niskopoziomowa)
 PSR
 analiza statyczna
 profilowanie
 BDD/TDD
Sky is the limit?
 Wzorce
 Antywzorce
 Clean Code
 Optymalizacja
 Refaktoryzacja
Trzech muszkieterów
 Zasady
 Przykazania
 Akronimy (mnemoniki)
Eeeee?
 KISS
 DRY
 YAGNI
 GRASP
 SOLID
• Programowanie zwinne (ASD, XP, DSDM, FDD )
• Programowanie obiektowe
• Dziedziczenie
Goliat vs Dawid
 GRASP
 9 zasad
 Controller, Creator, Indirection, Information Expert, High
Cohesion, Low Coupling, Polymorphism, Protected
Variations, Pure Fabrication
 "akademicki" wywód opisujący każdą z nich
 (pozornie) duży poziom abstrakcji - może odstręczać
 SOLID
 5 zasad
 prostota definicji
 prostota użycia
En garde!
 Single responsibility principle
 SRP
 Open/closed principle
 OCP
 Liskov substitution principle
 LSP
 Interface segregation principle
 ISP
 Dependency inversion principle
 DIP
SRP
 Zasad jednej odpowiedzialności
 KISS
 Brzytwa Ockhama
OCP
 Zasada otwarte-zamknięte
LSP
 Zasada podstawienia Liskov
 Mała pułapka:
 LSP w SOLID to nie zasada podstawienia sformułowana przez Barbarę
Liskov w 1987 tylko jej trawestacja by Uncle Bob
 LSP by Liskov określa strukturę typów i odpowiada na pytanie kiedy
dany typ jest podtypem drugiego
 Jest związana z teorią języków programowania
 LSP by Martin (unclebob) dotyczy projektowania
 opisuje hierarchię typów, ale i (a może przede wszystkim) klas
 jest uznawana za "słabszą" - bardziej miękkie kryteria akceptacji:
 brak błędu przy podstawieniu podtypu pod zmienną nadtypu;
 bez wymogu tych samych rezultatów
ISP
 Zasada segregacji interfejsów
 Klasa udostępnia tylko te interfejsy, które są niezbędne do
zrealizowania konkretnej operacji.
 Pozostałe są za fasadą, tak że korzystający z udostępnionych metod
nie ma (mieć) świadomości realnego przepływu danych i logiki
prowadzącej do realizacji jego polecenia.
 Klasa udostępnia minimum interfejsów, poziomem ogólności
dostosowanych do warstwy abstrakcji, na której operuje dana klasa.
DIP
 Zasada odwrócenia zależności
 DIP jako specyficzna implementacja IoC
 Zasada Hollywood
 Dependency Lookup
 Nie da się dobrze zaimplementować DIP bez SRP oraz ISP
 IoC wymaga udostępnienia interfejsów bez ujawniania
implementacji
 Implementacja jest zależna od modelu
 Interfejsy nie są zależne od implementacji
 Silna separacja warstw abstrakcji
Pobudka! :]
 Czy da się żyć bez SOLID?
 A czy da się przeżyć na śmieciowym jedzeniu?
 SOLID jako odpowiedzi na pytania
 SOLID a optymalizacja niskopoziomowa/PSR/analiza statyczna
 SOLID a wzorce
 SOLID a antywzorce
 SOLID a rzeczywistość
 bezustanne dążenie
 SOLIDna architektura?
SOLIDny programista
 http://nandrew.blogspot.com/2007/09/zasady-grasp-cz-i.html
 http://nandrew.blogspot.com/2007/09/zasady-projektowania-
obiektowego-grasp.html
 http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
 http://www.confreaks.com/videos/240-goruco2009-solid-object-
oriented-design
 https://sites.google.com/site/unclebobconsultingllc/getting-a-solid-start
 http://pl.scribd.com/doc/24308576/Data-Abstraction-and-Hierarchy
 http://phpmaster.com/dip-intro/
 http://martinfowler.com/bliki/InversionOfControl.html
 http://sebastian-malaca.blogspot.com/search/label/SOLIDny%20kod
 http://www.objectmentor.com/omSolutions/oops_what.html

Weitere ähnliche Inhalte

Andere mochten auch

Tworzenie i utrzymywanie czystego kodu
Tworzenie i utrzymywanie czystego koduTworzenie i utrzymywanie czystego kodu
Tworzenie i utrzymywanie czystego kodupabloware
 
ORANGE, PLAY, PLUS, T-MOBILE - KTO JEST LIDEREM?
ORANGE, PLAY, PLUS, T-MOBILE - KTO JEST LIDEREM?ORANGE, PLAY, PLUS, T-MOBILE - KTO JEST LIDEREM?
ORANGE, PLAY, PLUS, T-MOBILE - KTO JEST LIDEREM?Sterta
 
Treści dotyczące marek Orange i T-Mobile
Treści dotyczące marek Orange i T-MobileTreści dotyczące marek Orange i T-Mobile
Treści dotyczące marek Orange i T-MobileBrand24
 
SMD: social media dla korporacji, prezentacja Szymona Sikorskiego (Publicon)
SMD: social media dla korporacji, prezentacja Szymona Sikorskiego (Publicon)SMD: social media dla korporacji, prezentacja Szymona Sikorskiego (Publicon)
SMD: social media dla korporacji, prezentacja Szymona Sikorskiego (Publicon)Agencja Publicon
 
Porównanie pakietów tele...yfrowej telewizja upc
Porównanie pakietów tele...yfrowej   telewizja upcPorównanie pakietów tele...yfrowej   telewizja upc
Porównanie pakietów tele...yfrowej telewizja upcdariapl
 
Obsługa klienta w orange
Obsługa klienta w orangeObsługa klienta w orange
Obsługa klienta w orangebuzz24
 
Rewolucje i ewolucje w portalu Play
Rewolucje i ewolucje w portalu PlayRewolucje i ewolucje w portalu Play
Rewolucje i ewolucje w portalu PlayMaciej Lipiec
 
LTE bandwidth
LTE bandwidthLTE bandwidth
LTE bandwidthiseo01
 
PLNOG 18 - Rafał Budweil - "Triggo - polska innowacja e-mobilnosci miejskiej"
PLNOG 18 - Rafał Budweil - "Triggo - polska innowacja e-mobilnosci miejskiej"PLNOG 18 - Rafał Budweil - "Triggo - polska innowacja e-mobilnosci miejskiej"
PLNOG 18 - Rafał Budweil - "Triggo - polska innowacja e-mobilnosci miejskiej"PROIDEA
 
PLNOG 18 - Jerzy Paczocha- Transformacja krajowej sieci telekomunikacyjnej z ...
PLNOG 18 - Jerzy Paczocha- Transformacja krajowej sieci telekomunikacyjnej z ...PLNOG 18 - Jerzy Paczocha- Transformacja krajowej sieci telekomunikacyjnej z ...
PLNOG 18 - Jerzy Paczocha- Transformacja krajowej sieci telekomunikacyjnej z ...PROIDEA
 
PLNOG 18 - Sylwester Biernacki - Co dalej z centrami danych? Wyższy poziom ne...
PLNOG 18 - Sylwester Biernacki - Co dalej z centrami danych? Wyższy poziom ne...PLNOG 18 - Sylwester Biernacki - Co dalej z centrami danych? Wyższy poziom ne...
PLNOG 18 - Sylwester Biernacki - Co dalej z centrami danych? Wyższy poziom ne...PROIDEA
 
Case study marki NJU mobile z Albumu Superbrands Polska 2016
Case study marki NJU mobile z Albumu Superbrands Polska 2016 Case study marki NJU mobile z Albumu Superbrands Polska 2016
Case study marki NJU mobile z Albumu Superbrands Polska 2016 Superbrands Polska
 
LTE ADVANCED PPT
LTE ADVANCED PPTLTE ADVANCED PPT
LTE ADVANCED PPTTrinath
 
Presentation on visual basic 6 (vb6)
Presentation on visual basic 6 (vb6)Presentation on visual basic 6 (vb6)
Presentation on visual basic 6 (vb6)pbarasia
 
Prawne aspekty działań w social media.
Prawne aspekty działań w social media.Prawne aspekty działań w social media.
Prawne aspekty działań w social media.blogifirmowe.com
 
Visual basic ppt for tutorials computer
Visual basic ppt for tutorials computerVisual basic ppt for tutorials computer
Visual basic ppt for tutorials computersimran153
 

Andere mochten auch (20)

Tworzenie i utrzymywanie czystego kodu
Tworzenie i utrzymywanie czystego koduTworzenie i utrzymywanie czystego kodu
Tworzenie i utrzymywanie czystego kodu
 
Blog firmowy Play
Blog firmowy PlayBlog firmowy Play
Blog firmowy Play
 
ORANGE, PLAY, PLUS, T-MOBILE - KTO JEST LIDEREM?
ORANGE, PLAY, PLUS, T-MOBILE - KTO JEST LIDEREM?ORANGE, PLAY, PLUS, T-MOBILE - KTO JEST LIDEREM?
ORANGE, PLAY, PLUS, T-MOBILE - KTO JEST LIDEREM?
 
Treści dotyczące marek Orange i T-Mobile
Treści dotyczące marek Orange i T-MobileTreści dotyczące marek Orange i T-Mobile
Treści dotyczące marek Orange i T-Mobile
 
SMD: social media dla korporacji, prezentacja Szymona Sikorskiego (Publicon)
SMD: social media dla korporacji, prezentacja Szymona Sikorskiego (Publicon)SMD: social media dla korporacji, prezentacja Szymona Sikorskiego (Publicon)
SMD: social media dla korporacji, prezentacja Szymona Sikorskiego (Publicon)
 
Porównanie pakietów tele...yfrowej telewizja upc
Porównanie pakietów tele...yfrowej   telewizja upcPorównanie pakietów tele...yfrowej   telewizja upc
Porównanie pakietów tele...yfrowej telewizja upc
 
Orange Finanse
Orange FinanseOrange Finanse
Orange Finanse
 
Obsługa klienta w orange
Obsługa klienta w orangeObsługa klienta w orange
Obsługa klienta w orange
 
Rewolucje i ewolucje w portalu Play
Rewolucje i ewolucje w portalu PlayRewolucje i ewolucje w portalu Play
Rewolucje i ewolucje w portalu Play
 
LTE bandwidth
LTE bandwidthLTE bandwidth
LTE bandwidth
 
Save Repository From Save
Save Repository From SaveSave Repository From Save
Save Repository From Save
 
PLNOG 18 - Rafał Budweil - "Triggo - polska innowacja e-mobilnosci miejskiej"
PLNOG 18 - Rafał Budweil - "Triggo - polska innowacja e-mobilnosci miejskiej"PLNOG 18 - Rafał Budweil - "Triggo - polska innowacja e-mobilnosci miejskiej"
PLNOG 18 - Rafał Budweil - "Triggo - polska innowacja e-mobilnosci miejskiej"
 
PLNOG 18 - Jerzy Paczocha- Transformacja krajowej sieci telekomunikacyjnej z ...
PLNOG 18 - Jerzy Paczocha- Transformacja krajowej sieci telekomunikacyjnej z ...PLNOG 18 - Jerzy Paczocha- Transformacja krajowej sieci telekomunikacyjnej z ...
PLNOG 18 - Jerzy Paczocha- Transformacja krajowej sieci telekomunikacyjnej z ...
 
PLNOG 18 - Sylwester Biernacki - Co dalej z centrami danych? Wyższy poziom ne...
PLNOG 18 - Sylwester Biernacki - Co dalej z centrami danych? Wyższy poziom ne...PLNOG 18 - Sylwester Biernacki - Co dalej z centrami danych? Wyższy poziom ne...
PLNOG 18 - Sylwester Biernacki - Co dalej z centrami danych? Wyższy poziom ne...
 
Case study marki NJU mobile z Albumu Superbrands Polska 2016
Case study marki NJU mobile z Albumu Superbrands Polska 2016 Case study marki NJU mobile z Albumu Superbrands Polska 2016
Case study marki NJU mobile z Albumu Superbrands Polska 2016
 
LTE ADVANCED PPT
LTE ADVANCED PPTLTE ADVANCED PPT
LTE ADVANCED PPT
 
Presentation on visual basic 6 (vb6)
Presentation on visual basic 6 (vb6)Presentation on visual basic 6 (vb6)
Presentation on visual basic 6 (vb6)
 
Prawne aspekty działań w social media.
Prawne aspekty działań w social media.Prawne aspekty działań w social media.
Prawne aspekty działań w social media.
 
R.I.P PR, blog Play.
R.I.P PR, blog Play.R.I.P PR, blog Play.
R.I.P PR, blog Play.
 
Visual basic ppt for tutorials computer
Visual basic ppt for tutorials computerVisual basic ppt for tutorials computer
Visual basic ppt for tutorials computer
 

Mehr von Michal Lukaszewski

How we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened nextHow we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened nextMichal Lukaszewski
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówMichal Lukaszewski
 
How to fix a code to not corrupt an application
How to fix a code to not corrupt an applicationHow to fix a code to not corrupt an application
How to fix a code to not corrupt an applicationMichal Lukaszewski
 
Distributed Systems @ Code Europe
Distributed Systems @ Code EuropeDistributed Systems @ Code Europe
Distributed Systems @ Code EuropeMichal Lukaszewski
 
Budowanie aplikacji PHP bez użycia frameworków
Budowanie aplikacji PHP bez użycia frameworkówBudowanie aplikacji PHP bez użycia frameworków
Budowanie aplikacji PHP bez użycia frameworkówMichal Lukaszewski
 
Domain Events in Distributed Architecture
Domain Events in Distributed ArchitectureDomain Events in Distributed Architecture
Domain Events in Distributed ArchitectureMichal Lukaszewski
 
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuTechnologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuMichal Lukaszewski
 

Mehr von Michal Lukaszewski (9)

How we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened nextHow we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened next
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędów
 
How to fix a code to not corrupt an application
How to fix a code to not corrupt an applicationHow to fix a code to not corrupt an application
How to fix a code to not corrupt an application
 
Distributed Systems @ Code Europe
Distributed Systems @ Code EuropeDistributed Systems @ Code Europe
Distributed Systems @ Code Europe
 
Budowanie aplikacji PHP bez użycia frameworków
Budowanie aplikacji PHP bez użycia frameworkówBudowanie aplikacji PHP bez użycia frameworków
Budowanie aplikacji PHP bez użycia frameworków
 
Domain Events in Distributed Architecture
Domain Events in Distributed ArchitectureDomain Events in Distributed Architecture
Domain Events in Distributed Architecture
 
Action Domain Response
Action Domain ResponseAction Domain Response
Action Domain Response
 
Wydajność i optymalizacja
Wydajność i optymalizacjaWydajność i optymalizacja
Wydajność i optymalizacja
 
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuTechnologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
 

Solid vs php

  • 1. SOLID vs. PHP MICHAŁ ŁUKASZEWSKI /LUKASZEWSKI.MICHAL /M_LUKASZEWSKI
  • 2. SOLIDny programista PHP  Mój program działa  Optymalnie  Jest zgodny ze standardami  I wzorcami?
  • 3. Aby biec naucz się chodzić  znajomość języka ("mikro optymalizacja" niskopoziomowa)  PSR  analiza statyczna  profilowanie  BDD/TDD
  • 4. Sky is the limit?  Wzorce  Antywzorce  Clean Code  Optymalizacja  Refaktoryzacja
  • 5. Trzech muszkieterów  Zasady  Przykazania  Akronimy (mnemoniki)
  • 6. Eeeee?  KISS  DRY  YAGNI  GRASP  SOLID • Programowanie zwinne (ASD, XP, DSDM, FDD ) • Programowanie obiektowe • Dziedziczenie
  • 7. Goliat vs Dawid  GRASP  9 zasad  Controller, Creator, Indirection, Information Expert, High Cohesion, Low Coupling, Polymorphism, Protected Variations, Pure Fabrication  "akademicki" wywód opisujący każdą z nich  (pozornie) duży poziom abstrakcji - może odstręczać  SOLID  5 zasad  prostota definicji  prostota użycia
  • 8. En garde!  Single responsibility principle  SRP  Open/closed principle  OCP  Liskov substitution principle  LSP  Interface segregation principle  ISP  Dependency inversion principle  DIP
  • 9. SRP  Zasad jednej odpowiedzialności  KISS  Brzytwa Ockhama
  • 11. LSP  Zasada podstawienia Liskov  Mała pułapka:  LSP w SOLID to nie zasada podstawienia sformułowana przez Barbarę Liskov w 1987 tylko jej trawestacja by Uncle Bob  LSP by Liskov określa strukturę typów i odpowiada na pytanie kiedy dany typ jest podtypem drugiego  Jest związana z teorią języków programowania  LSP by Martin (unclebob) dotyczy projektowania  opisuje hierarchię typów, ale i (a może przede wszystkim) klas  jest uznawana za "słabszą" - bardziej miękkie kryteria akceptacji:  brak błędu przy podstawieniu podtypu pod zmienną nadtypu;  bez wymogu tych samych rezultatów
  • 12. ISP  Zasada segregacji interfejsów  Klasa udostępnia tylko te interfejsy, które są niezbędne do zrealizowania konkretnej operacji.  Pozostałe są za fasadą, tak że korzystający z udostępnionych metod nie ma (mieć) świadomości realnego przepływu danych i logiki prowadzącej do realizacji jego polecenia.  Klasa udostępnia minimum interfejsów, poziomem ogólności dostosowanych do warstwy abstrakcji, na której operuje dana klasa.
  • 13.
  • 14. DIP  Zasada odwrócenia zależności  DIP jako specyficzna implementacja IoC  Zasada Hollywood  Dependency Lookup  Nie da się dobrze zaimplementować DIP bez SRP oraz ISP  IoC wymaga udostępnienia interfejsów bez ujawniania implementacji  Implementacja jest zależna od modelu  Interfejsy nie są zależne od implementacji  Silna separacja warstw abstrakcji
  • 15. Pobudka! :]  Czy da się żyć bez SOLID?  A czy da się przeżyć na śmieciowym jedzeniu?  SOLID jako odpowiedzi na pytania  SOLID a optymalizacja niskopoziomowa/PSR/analiza statyczna  SOLID a wzorce  SOLID a antywzorce  SOLID a rzeczywistość  bezustanne dążenie  SOLIDna architektura?
  • 16. SOLIDny programista  http://nandrew.blogspot.com/2007/09/zasady-grasp-cz-i.html  http://nandrew.blogspot.com/2007/09/zasady-projektowania- obiektowego-grasp.html  http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod  http://www.confreaks.com/videos/240-goruco2009-solid-object- oriented-design  https://sites.google.com/site/unclebobconsultingllc/getting-a-solid-start  http://pl.scribd.com/doc/24308576/Data-Abstraction-and-Hierarchy  http://phpmaster.com/dip-intro/  http://martinfowler.com/bliki/InversionOfControl.html  http://sebastian-malaca.blogspot.com/search/label/SOLIDny%20kod  http://www.objectmentor.com/omSolutions/oops_what.html