Programowanie Zgodne z Regułami SOLID - Poradnik Dla Początkujących Programistów
SOLID jest to pięć reguł dotyczących programowania obiektowego. Zaproponował je amerykański programista Robert C. Martin (Uncle Bob) - uważany przez wielu jako autorytet w świecie programowania. Uncle Bob przede wszystkim słynie ze swojego podejścia do czystego kodu. Teoria zasad SOLID została wprowadzona przez Martina w jego artykule w roku 2000 - Design Principles And Design Patterns. Samo słowo SOLID oznacza coś solidnego, konstruktywnego, czy konkretnego, ale nie od tego wzięła się nazwa. Składają się na nie opisane wcześniej zasady, które pochodzą kolejno od każdej litery w słowie SOLID.
S jak Single Responsibility Principle (SRP)
Zasada Pojedynczej Odpowiedzialności - Każda klasa powinna mieć tylko jedną odpowiedzialność. Nigdy nie powinien istnieć więcej niż jeden powód do tego, aby ją w przyszłości zmienić.
O jak Open-Closed Principle (OCP)
Zasada Otwarte-Zamknięte - Element oprogramowania powinien być otwarty na rozbudowę, ale zamknięty na modyfikację. Jeżeli mamy jakąś metodę, która jest używana w innych częściach systemu, to nie powinna być już ona modyfikowana.
L jak Liskov Substitution Principle (LSP)
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. W miejsce typu bazowego możesz podstawić dowolny typ klasy pochodnej i nie powinieneś utracić poprawnego działania.
I jak Interface Segregation Principle (ISP)
Zasada Segregacji Interfejsów - Żaden klient nie powinien być zmuszany do polegania na metodach, z których nie korzysta. Kilka dedykowanych interfejsów jest lepsze niż jeden, który jest zbyt ogólny.
D jak Dependency Inversion Principle (DIP)
Zasada Odwrócenia Zależności - Moduły wysokopoziomowe nie powinny zależeć od modułów niskopoziomowych. I pierwsze, i drugie powinny zależeć od abstrakcji (interfejsów, lub klas abstrakcyjnych). Abstrakcje nie powinny zależeć od szczegółów. To szczegóły powinny zależeć od abstrakcji.
Która z zasad SOLID jest najważniejsza?
Ostatnio otrzymałem pytanie od jednego z czytelników bloga o to, która z reguł SOLID jest moim zdaniem najważniejsza. Nie ma takiej, wszystkie zasady są równie ważne i co najważniejsze zasady te są ze sobą powiązane. Czyli na przykład, jeżeli nie stosujemy się do zasady podstawienia liskov, to również najczęściej naruszamy zasadę otwarte-zamknięte. Jeżeli nie stosujemy się do zasady segregacji interfejsów, to również prawdopodobnie naruszamy zasadę pojedynczej odpowiedzialności.
PODSUMOWANIE
Większość programistów umie rozszyfrować skrót SOLID, ale nie każdy stosuje się do tych zasad. Szczególnie ciężko zrozumieć zasady SOLID początkującym programistom, ale nie ma się czemu dziwić, ponieważ zrozumienie ich wymaga czasu i praktyki. Warto wiedzieć czym są, przede wszystkim dlatego, że dzięki stosowaniu się do nich nasz kod będzie lepszej jakości, będzie go można łatwiej rozwijać i utrzymywać, nasze systemy będą testowalne. Dodatkowo o SOLID lubią pytać rekruterzy na rozmowach kwalifikacyjnych na stanowiska młodszych programistów. Jeżeli jesteś początkującym programistą i jeszcze nie do końca rozumiesz zasady przedstawiona przez Martina - napisz w komentarzu, chętnie rozwinę wtedy swoje artykuły. Musisz także pamiętać, że zrozumienie wszystkich zasad wymaga trochę praktyki. W kolejnych artykułach postaram się, przybliżyć Ci trochę tematykę testów jednostkowych w C#. Właśnie w pisaniu dobrych testów, potrzebne jest stosowanie się do zasad SOLID.
Poprzedni artykuł - SOLID - Dependency Inversion Principle (DIP) - Wszystko Co Powinieneś Wiedzieć o Zasadzie Odwrócenia Zależności.
Następny artykuł - Testy Automatyczne Wyjaśnione w Jednym Artykule.