Mój Blog
-
SOLID: DIP czyli jak mądrze operować kompozycją
Kompozycja moim zdaniem jest jedną z najbardziej przydatnych technik w programowaniu. Tworzenie wirtualnych obiektów, zawierających w sobie inne obiekty pozwala na bardzo dokładne odwzorowanie ich odpowiedników w świecie rzeczywistym. Bardzo dobrym przykładem jest samochód. Składa się on m. in. z silnika (który zawiera w sobie tłoki, świece, wtryskiwacze, kolektory), zawieszenia (sprężyny, amortyzatory, wahacze) albo skrzyni…
-
SOLID: ISP czyli zapomnij o uniwersalnych interfejsach
Jak wspomniałem we wcześniejszych artykułach, zasady SOLID nie występują jako osobne byty. Bardzo często kod zgodny z jedną z nich „niechcący” spełnia także inną. Analogicznie – zły kod często łamie kilka tych zasad naraz. Dziś przyjrzymy się zasadzie ISP (interface segregation principle), która mówi, że klasa nie powinna być zmuszana do implementacji metod, których nie…
-
SOLID: LSP, czyli kilka słów o zgodności między generacjami
Jak pokazałem we wcześniejszych artykułach dotyczących SOLID, w wielu przypadkach rozwoju projektu bardzo ważną rolę odgrywają interfejsy. Trzecia zasada SOLID brzmi pozornie prosto: jeśli jakaś część programu działa z klasą bazową, powinna działać równie dobrze z każdą jej podklasą. W praktyce jednak jest to jedna z najczęściej łamanych zasad, często nieświadomie. Wystarczy jeden niespodziewany wyjątek…
-
SOLID: OCP, czyli raz ustalone nie podlega negocjacjom…
Każdy projekt w pewnym momencie się rozrasta. Nowe funkcjonalności, nowe wymagania, nowe edge case’y – to nieuniknione. Problem pojawia się wtedy, gdy każda taka zmiana wymaga otwierania i modyfikowania klas, które już działają poprawnie. Właśnie przed tym chroni nas zasada OCP. Osobiście, kiedy zaczynam od małego projektu, często czuję pokusę w stylu – „o, tutaj…
-
SOLID: SRP, czyli dlaczego multitasking w programowaniu jest zły…
Myślę, że każdy z nas nieraz spotkał się z opinią, że aby nadążyć za dzisiejszym światem, należy być wielozadaniowym. Jednak z jednej strony nie pozwala „dopieścić” konkretnej sprawy od początku do końca, zaś z drugiej niesamowicie męczy i wypala. Nie inaczej jest w programowaniu obiektowego (OOP), którego głównym założeniem jest posługiwanie się wirtualnymi obiektami, które…
-
Zbudujemy nowy dom… albo burgera
W dzisiejszym wpisie chciałbym skupić się na wzorcu projektowym Budowniczy. Ponieważ poprzednio rozpisałem się troszkę o gotowaniu i mojej umiarkowanej skłonności do gubienia kilogramów, zatem na warsztat weźmiemy sobie restaurację serwującą burgery 🙂 Zanim zaczniemy podawać klientom nasze równie smaczne, co niezdrowe kanapki, najpierw skupmy się na przepisie na nasz specjał, utwórzmy prostą klasę Burger:…
-
Strategia – czyli w tym szaleństwie jest metoda
Chyba każdy zna takie powiedzenie, że kiepski szef kuchni nie lubi kosztować przyrządzonych przez siebie potraw. Niejednokrotnie wpadałem w zachwyt pt. „Napisałem taki super programik, wrzuciłem go na SPOJ i wszystko świeci się na zielono”. Albo np. napisałem klasyczny kalkulator BMI i cieszyłem się, że podaję wagę, wzrost i w zamian dostaję informację, że powinienem…
-
Fasada, czyli wzorzec, którego używałem nieświadomie…
W trakcie mojej krótkiej przygody z kodem, miałem ogromną przyjemność poznać zasady programowania obiektowego na przykładzie języka C++. Sporo czasu zajmowały mi rozważania, czy można coś zapisać prościej, jak uniknąć redundancji kodu i czy dany obiekt nie potrzebuje jeszcze jednej prywatnej metody. Pierwszą aplikacją konsolową, którą napisałem „obiektowo” była książka adresowa. Temat był mi już…








