Mój Blog

  • SOLID: DIP czyli jak mądrze operować kompozycją

    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

    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

    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…

    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…

    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

    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

    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…

    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ż…