Właśnie skończyłem czytać książkę "Pragmatyczny programista. Od czeladnika do mistrza". Nie będę odosobniony, jeśli powiem, że każdy programista powinien tę książkę przeczytać. Ten post jest zgrupowaniem haseł i zasad, które dla mnie osobiście były najciekawszą nauką płynącą z tej lektury. Większość z nich to tematy znane, ale moim zdaniem na tyle ważne żeby jeszcze raz o nich powiedzieć i podkreślić ich znaczenie.Wybite okno
Kiedy w bloku pojawi się wybite okno i nikt dostatecznie szybko tego nie naprawi, szybko pojawią się kolejne wybite okna i inne oznaki postępującego zniszczenia. Podobna zasada dotyczy kodu źródłowego - nie pozostawiaj w swoich systemach wybitych okien (zły kod, antywzorce, błędne decyzje projektowe, work-around'y). Nie dopuszczaj do powstania "ogniska rozkładu" Twojego systemu.Poruszając się wzdłuż osi pionowej, rzut aktualnego położenia na oś poziomą nie zmienia się. Tak powinny być zaprojektowane systemy informatyczne: zmiany w module A nie powinny być zauważone przez moduł B. Oba moduły powinny komunikować się za pomocą dobrze zdefiniowanych interfejsów, a szczegóły implementacji powinny być ukryte tak, aby każdy z modułów mógł zostać zmieniony, a nawet zastąpiony bez konieczności zmian w pozostałych modułach.
Prawo Demeter (zasada minimalnej wiedzy)
W dużym skrócie: rozmawiaj tylko z obiektami z własnego otoczenia. Nie wyciągaj z nich innych obiektów ("wnętrzności") aby z nimi porozmawiać (byłoby to wnikanie w implementację). Niech obiekt nadrzędny odpowiednio oddeleguje wywołania, sam decydując jak chce zrealizować zadany cel. Zamiast:
car.getOnboardComputer().getGPS().getLocation();napisz
car.getLocation()pozostawiając klasie Car decyzję, jak zaimplementować określanie lokalizacji.
Pociski smugowe
Autorzy nazwali tak technikę podobną nieco do prototypowania, która zaleca stworzenie na początku rozwiązania bardzo ubogiego, ale przechodzącego przez wszystkie warstwy i stanowiącego bazę dla dalszego rozwoju systemu. W odróżnieniu od prototypu, rozwiązanie to nie trafia do kosza po sprawdzeniu że działa, lecz staje się integralną częścią systemu, wokół której tworzone są kolejne funkcjonalności aż do zakończenia projektu. Nazwa pociski smugowe wzięła się z tego, że stworzony kod pozwala stwierdzić, czy projekt "trafia do celu" czyli idzie w dobrym kierunku już na początku, posiadając zaimplementowaną jedynie najmniejszą możliwą część funkcjonalności. Dziś w dobie agile, chyba bardzo często stosowana technika ;)
Odwracalność
Podejmuj decyzje odwracalne. Przygotuj się na to, że klient zechce zmienić wersję, lub nawet producenta bazy danych, serwer aplikacyjny etc...
Programowanie przypadkowe
Fred nie wie dlaczego program nie działa, ponieważ wcześniej nie wiedział, dlaczego program działał.
Poznaj API
i technologie które używasz, aby nie tworzyć kodu na oślep, kodu który działa przez przypadek.
Testowanie jednostkowe
jest jak testowanie układów scalonych - sygnały podane na odpowiednie wejścia powodują odpowiednie stany na wyjściach.
DRY
Na temat tej zasady nie będę się powtarzał :)


1 komentarze:
poszukuje tej ksiazki, ale niestety brak w ksiegarniach... moze chcialbys ja odsprzedac? :)
Prześlij komentarz