Posty

Jeden prosty krok do SOLIDnego kodu - Klasy final w PHP

Słowo kluczowe `final` Zastosowanie final w klasie, uniemożliwia zastosowanie dziedziczenia względem niej. Także może się wydawać że blokujemy rozszerzalność takiej klasy i zamykamy się na korzyści płynące z mechanizmu polimorfizmu. Ale czy na pewno? Moim zdaniem `final class` to wspaniałe narzędzie wspierające SOLIDa , chociaż wymaga bardzo dużo samo zaparcia i warto mieć na uwadze że SOLID to tylko zestaw reguł, które można, ale nie trzeba wykorzystywać. Zobaczmy więc co zyskujemy dzięki stosowaniu słowa `final`. Liskov Subtition Principle Zależnie od tego jak spojrzymy na tę regułę zyskujemy w obydwu przypadkach. W "oryginalnej" regule Liskov, zastosowanie `final` zablokuje możliwości dziedziczenia takiej klasy, a więc całkowicie wyeliminuje potencjalny problem niepoprawnego dziedziczenia klas bazowych , które gdzieś w środku mógłby wpłynąć na poprawność działania aplikacji. Wystarczy przypomnieć sobie przykład z kołem i elipsą. Natomiast Martin rozszerza tę regułę o konc

Najważniejsza książka programisty - Mistrz Czystego Kodu

Najważniejsza "miękka" książka programisty Oferty książki Mistrz Czystego Kodu "Miękka" specjalnie w cudzysłowie, ponieważ mamy tam sporo mięsa i konkretnych przykładów. Dzięki niej zrozumiałem czym profesjonalizm nie jest. Że nie koniecznie pomagamy zgadzając się na wszystko. Nie jest to książka jak ich wiele o psychologi w biznesie, byciu liderem etc. Zawarte w niej informacje to, moim zdaniem, wykaz najważniejszych umiejętności inżyniera oprogramowania. Zdecydowanie numer jeden na półce programisty. Czy jesteś mistrzem czystego kodu? Zastawiałem się jak tytuł ma się do tych wszystkich rozdziałów nie związanych w żaden sposób z stricte kodowaniem, przyznam że w zakupowym szale pomyliłem ją z czystym kodem. Po lekturze zrozumiałem że sama świadomość tego jak wygląda czysty kod, bez wiedzy jak go egzekwować jest niczym. Bez pewnej wytrwałości i odpowiedniej higieny pracy, nie uleganiu pozornym pokusom np. pominięcia testu dzięki czemu kod powstanie sz

Jak szybko uczyć się od innych programistów

Zastanawiam się od pewnego czasu w jaki sposób mógłbym poćwiczyć pair programming . Też zastanawiasz się w jak inni programiści na co dzień? Każdy z nas na co dzień ma inny zestaw problemów do rozwiązania, pracuje w aplikacjach o innej skali, innych priorytetach. Na prelekcjach słychać zazwyczaj jak to wszystko fajnie poszło jak został wdrożony po raz kolejny CQRS. Ale jak taki programista rozwiązuje problemy na co dzień? Na co inni zwracają uwagę, na co są wyczuleni itd. Zastanawiałem się jak w szybki sposób podzielić się taką wiedzą w jakiś praktyczny sposób no i... Wpadłem na coś co można by nazwać "hotseat pair programming" Załóżmy że mamy 5 par. Przedstawiamy wszystkim ten sam problem do rozwiązania. Po pół godziny jedna z osób w parze przechodzi do innej. Za kolejne pół godziny robi to druga osoba z pary, która poprzednio została w danej parze. Dzięki temu zawsze jest ktoś kto zna dłużej ten kod, więc nie ma problemu że z każdym trzeba by go poznać od początk

Dlaczego warto stosować wzorzec dekorator

Co zyskujesz stosując wzorzec dekorator? Chciałbym podzielić się spostrzeżeniami jakie korzyści daje nam używanie wzorców, w jaki sposób wpływają na to że nasz kod jest bardziej elastyczny, spełnia zasady SOLID i paradygmatu programowania obiektowego. Jest masa wpisów gdzie zostało napisane jakie problemy dekorator rozwiązuje i jak go zaimplementować w danym języku. Tutaj będzie uniwersalniej. Dekorator spełnia założenia "kompozycja ponad dziedziczenie". Skoro już szukamy dekoratora to zapewne dziedziczenie nam się nie sprawdziło. :) Zastosowanie dekoratora zapewnia nam sporą swobodę w kwestii tego kiedy i w co chcemy dany komponent udekorować. Istnieje podejście które mówi nam o tym ze kompozycja jest lepsza od dziedziczenia właśnie z powodu elastyczności. Na pewno napisze o tym jeszcze więcej. Ponieważ jest to moim zdaniem bardzo dobre podejście w programowaniu obiektowym. Wracając do naszego dekoratora, jego zastosowanie umożliwia nam dodanie zadań do takich obi