Cześć,
chciałbym wprowadzić wam kilka przydatnych i popularnych zestawów wzorców projektowych oraz parę zasad, które mógłbym opisywać na zasadzie - jaki jest problem i jak ten problem rozwiązać.
Jest to post typowo skierowany dla osób interesujących się programowaniem. Jeżeli chciałbyś zacząć robić coś w kierunku programowania, to możesz zobaczyć jak bardzo obszerny jest ten temat :)
Pierwszym co chciałbym wprowadzić i omówić w innych postach to, to zasady SOLID.
Zasady SOLID zostały zaproponowane przez Roberta C. Martina zwanego jako "Wujek Bob".
Rozwinięcie SOLID wygląda tak:
- Zasada pojedynczej odpowiedzialności (single responsibility principle)
- Zasada otwarta-zamknięta (open-closed principle)
- Zasada podstawienia Liskova (Liskov substitution principle)
- Zasada segregacji interfejsu (Interface segregation principle)
- Zasada odwrócenia zależności ( Dependency inversion principle)
Więcej informacji ogólnych na ten temat możesz znaleźć np. tutaj: https://pl.wikipedia.org/wiki/SOLID_(programowanie_obiektowe)
Dodatkowo mamy jeszcze takie zasady(czy tam reguły) jak DRY oraz KISS.
DRY to "Nie powtarzaj się" (Don't Repeat Yourself)
Więcej informacji o DRY znajdziesz tutaj: https://pl.wikipedia.org/wiki/DRY
Natomiast KISS, to "utrzymuj to (kod) najprościej jak się da" Keep It Stupid Simple bądź Keep It Simple, Stupid.
Więcej informacji o KISS znajdziesz tutaj: https://pl.wikipedia.org/wiki/KISS_(regu%C5%82a)
Z takich popularnych zasad jest jeszcze takie coś jak prawo demeter (Law of Demeter) inaczej mówiąc "nie rozmawiaj z nieznajomymi".
Więcej o prawie demeter znajdziesz tutaj: https://pl.wikipedia.org/wiki/Prawo_Demeter
Druga rzecz, o jakiej chciałbym napisać szczegółowo w przyszłości, to wzorce projektowe GRASP.
GRASP to zbiór pewnych wskazówek związanych z przydzielaniem odpowiedzialności danym klasom i obiektom w językach obiektowych takich jak Java i C#.
Rozwinięcie GRASP - General Responsibility Assignment Software Patterns
Wymienię teraz wszystkie wzorce projektowe zawierające się w GRASP. Nazywają się one następujaco:
- Twórca (Creator)
- Ekspert w swojej dziedzinie (Information expert)
- Kontroler (Controller)
- Małe powiązania (Low coupling)
- Wysoka spójność (High cohesion)
- Polimorfizm (Polymorphism)
- Czyste wytworzenie (Pure fabrication)
- Pośredniość (Inderection)
- Chroniona zmienność (Protected variation)
Więcej informacji o GRASP możesz znaleźć na przykład tutaj: https://en.wikipedia.org/wiki/GRASP_(object-oriented_design)
Niestety nie ma na wiki żadnej informacji ogólnie na ten temat, wiec dam wam inny opis GRASP po polsku: http://kurs.aspnetmvc.pl/Wzorce/Zasady_GRASP
PS. Jeżeli chodzi o tłumaczenia niektórych wyrazów, to starałem się spolszczyć to najlepiej jak tylko mogłem. Głównym celem jest nabranie intuicji dzięki poznaniu co może robić dana zasada lub wzorzec poprzez samą nazwę.
Mam nadzieję, że ta pigułka użytecznych informacji zachęci was do rozszerzenia waszej wiedzy jako programistów, bądź przyszłych programistów poprzez czytanie na ten temat :)