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
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?