Przeczytałem ostatnio kolejną książkę. W tym wpisie dzielę się informacjami, które w niej znalazłem oraz które wdrożyłem w swoim życiu. Staram się z każdej książki wdrażać minimum jedną rzecz.
Spis treści
Wdrożyłem:
- Definiowanie interfejsu i jego implementacji w oddzielnych modułach.
Notatki:
Instrukcja new jest zapachem kodu. Tworzy jawną zależność. Lepiej jest wstrzyknąć klasę i operować na interfejsie.
Aspekty (programowanie aspektowe) są doskonałym narzędziem umożliwiającym implementację zagadnień przecinających (np. logowania danych wejściowych i wyniku każdej metody).
Wzorce projektowe
Wzorzec Zerowy Obiekt jest bardzo ciekawym wzorcem. Pozwala uniknąć wielu sprawdzeń czy dany obiekt jest Nullem. Należy unikać jednak pewnego antywzorca, którym jest Dodanie metody IsNull.
Wzorzec Adapter pozwala udostępnić klasę klientowi w postaci interfejsu, którego ta klasa nie implementuje.
Wzorzec Strategia daje możliwość zmieniania działania klasy w zależności od ustawień.
Testy
Buduj testy składające się z trzech etapów:
- Arrange — przygotowanie.
- Act — wykonanie (tylko jednego działania).
- Assert — sprawdzenie (tylko jednej rzeczy).
TDD — Test Driven Development
- Czerwone — utworzenie testu.
- Green — implementacja metody.
- Refactor — poprawienie kodu.
Wyjątki z warstwy niższej powinny być opakowywane przez aktualną warstwę, aby nie wyciekły do wyższej warstwy (nie było wycieku abstrakcji).
Nazwy
Nazywaj zwięźle i czytelnie obiekty, zmienne i metody. Jeżeli nie wiesz jak coś nazwać, nazwij to np. XXXXXXXXXXXX, a po napisaniu kodu i poznaniu lepiej domeny, będziesz miał większą wiedzę, aby nazwać dobrze daną rzecz.
Refaktoryzacja
- Zapisuj magiczne liczby jako stałe lub zmienne konfiguracyjne.
- Zastąp wyrażenia warunkowe polimorfizmem.
- Zastąp konstruktor metodą fabryczną.
- Zastąp konstruktor klasą fabryczną.
- Zastąp dziedziczenie delegowaniem.
Technika Złotego Wzorca (testy charakteryzujące)
Jeżeli nie masz testów i nie znasz danych wejściowych oraz wejściowych dla pewnej metody, a chcesz ją poprawić, to możesz skorzystać z techniki złotego wzorca. Na produkcji zacznij zapisywać dane wejściowe do danej metody oraz dane wyjściowe. Następnie wykorzystaj to dane do zrobienia testów. Poprawiaj swoją metodę. Jeżeli w pewnym momencie Twoja poprawiona metoda zacznie zwracać coś innego, niż zwracała do tej pory, a dowiesz się tego na podstawie danych, które zabrałeś wcześniej, to będziesz wiedział, że ją zepsułeś. Tym sposobem będzie Ci łatwiej naprawić działanie metody i zrozumieć ją.
SOLID
- Zasada pojedynczej odpowiedzialności.
- Ta zasada pozwala tworzyć klasy, które można zmieniać tylko z jednego powodu. Jeżeli klasa ma kilka powodów do zmiany, należy ją podzielić.
- Wzorzec Dekorator i Kompozyt przydają się w stosowaniu zasady pojedynczej odpowiedzialności.
- Zasada „Otwarty/Zamknięty”:
- Elementy oprogramowania powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje.
- Można oczywiście wprowadzać zmiany usuwające błędy.
- Elementy oprogramowania powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje.
- Zasada podstawienia Liskov:
- Należy tworzyć taką hierarchię klas, aby kod kliencki mógł korzystać z dowolnej klasy nadrzędnej bez zakłócenia swojego działania.
- Segregacja interfejsów:
- Klienci nie powinni zależeć od interfejsów, których nie używają. Interfejsy powinny być małe.
- Odwracanie zależności:
- Moduły wysokopoziomowe nie powinny zależeć od niskopoziomowych. Abstrakcja nie powinna zależeć od szczegółów.
- Umieszczaj interfejs w innym pakiecie niż jego implementacja.
- Wzorzec Schody umożliwia uporządkowanie interfejsów oraz implementacji i sprawienie, że klient zależy tylko od jednego interfejsu.
- Moduły wysokopoziomowe nie powinny zależeć od niskopoziomowych. Abstrakcja nie powinna zależeć od szczegółów.
Wszystkie posty związane z książkowymi wdrożeniami:
- My robimy to inaczej! Opowieść o tym, jak organizacje powstają i upadają, by móc odrodzić się na nowo – J. Kotter, H. Rathgeber
- Zostań Drapieżnikiem — R. Mazur, M. Osman
- Od dobrego do wielkiego – J. Collins
- Ludzie. Krótka historia o tym, jak spieprzyliśmy wszystko – Tom Phillips
- Filozofia kaizen. Jak mały krok może zmienić Twoje życie — Maurer R.
- Od celu do wyniku. Siła mechanizmów katalitycznych w biznesie — J. Collins
- Praktyczne metody osiągania sukcesów. Potęga myśli — M. R. Kopmeyer
- Mit przedsiębiorczości. Dlaczego większość Małych firm upada i jak temu zaradzić – Michael E. Gerber
- Myśl i bogać się. Orientacja na cel — Greg S. Reid
- Dekalog szczęścia. Jak nie dać się udawanej radości, ale też nie wpaść w czarną rozpacz — w rozmowach z Beatą Pawłowicz
- Kreowanie Globalnej Marki. Magia Harry’ego Pottera — Stephen Brown
- Twoja wolność finansowa. Poprzez Marketing przez sieć — Andre Blanchard
- Prosta droga do sukcesu — Rafał Motriuk
- Eutyfron. Obrona. Kriton. — Platon
- Listy — Platon
- Starbucks. Sztuka wyciągania wniosków z porażek, czyli rewolucyjny przepis Schultza na wielki sukces — Howard Schultz z Joanne Gordon
- Zasada Dilberta. Szefowie, zebrania, fanaberie dyrekcji i inne plagi widziane z biurowej zagródki — Scott Adams
- Bądź kreatywny i pomysłowy — Barrie Hawkins
- Ludzie przeciwko ludziom — Jacek Santorski
- Emerytura nie jest Ci potrzebna, czyli jak kilka Twoich decyzji może spowodować, że zgromadzisz majątek i szybciej osiągniesz wolność finansową — Jacek Borowiak
- Laptopowy milioner. Jak zerwać z pracą na etacie i zacząć zarabiać w sieci — Mark Anastasi
- 4 godziny, by zostać mistrzem, nie tylko w kuchni — Timothy Ferriss
- Testy A/B. Od kliknięcia do klienta — Dan Siroker i Pete Koomen
- Sapiens. Od zwierząt do bogów — Yuval Noah Harari
- Niezwykłe historie zwykłych ludzi. Sekrety ich sukcesu — Alfred J. Palla
- Gotowi na start. Jak sprawdzić pomysł na biznes, żeby nie stracić czasu i pieniędzy — Pat Flynn
- Skuteczny e-mail marketing. Dowiedz się, jak skutecznie tworzyć wiadomości i sprzedawać e-mailem — Artur Maciorowski
- Wielka czwórka. Ukryte DNA: Amazon, Apple, Facebook i Google — Galloway Scott
- Biznes, czyli sztuka budowania relacji — Miłosz Brzeziński
- Życiologia, czyli o mądrym zarządzaniu czasem — Miłosz Brzeziński
- Cud uważności. Prosty podręcznik medytacji — Thich Nhat Hanh
- Umysł miliardera. 20 zasad bogactwa i sukcesu najbogatszych ludzi świata — Rafael Badziag
- Rework — Jason Fried, David Heinemeier Hansson
- Jak zdobyć bogactwo. Najważniejsze nauki jednego z najbogatszych brytyjskich przedsiębiorców — Felix Dennis
- Jak zarobić duże pieniądze. 88 sposobów na bogactwo i sukces — Felix Dennis
- Zdobywanie fortuny. Praktyczne metody osiągania sukcesów — M. R. Kopmeyer
- Miliarderzy. Kariery najbogatszych ludzi świata przedstawiają tajemnice swoich sukcesów — Charles-Albert Poissant, Christian Godefroy
- Elon Musk. Biografia twórcy PayPala, Tesli, SpaceX — Ashlee Vance
- Finansowa forteca. Jak inwestować skutecznie i mieć święty spokój — Marcin Iwuć
- Specyfikacja na przykładach. Poznaj zwinne metody pracy i dostarczaj właściwe oprogramowanie — Gojko Adzic
- Oprogramowanie łatwe w utrzymaniu. Pisz kod podatny na przyszłe zmiany — Joost Visser
- Jak uczyć się efektywnie: metody i motywacja: praktyczny poradnik — Edwin A. Locke
- Wy wszyscy moi ja — Miłosz Brzeziński
- Jak odgracić dom — Dana K. White
- Doskonała kariera — Max Eggert – moje notatki
- Steve Jobs — Walter Isaacson – notatki z książki
- Jak uniknąć pomyłek — Robert E. Mittelstaedt, Jr.
- Głowa do liczb — dr Barbara Oakley
- Najbogatszy człowiek w Babilonie — George S. Clason
- Wielkie marzenia? Szimon Peres i jego książka
- 25 miniemerytur — Jakub B. Bączek
- Jakoś wkrótce — Kelly i Zach Weinersmithowie
- Wielcy z wyboru — Jim Collins, Morten T. Hansen
- Jak upadają giganci — Jim Collins – notatki
- Wizjonerskie organizacje — Jim Collins, Jerry I. Porras
- Współbieżność w języku C#. Receptury — Stephen Cleary
- Myślenie strategiczne — Harris Vincent
- Wszyscy kłamią… — Seth Stephens-Davidowitz
- W co grają ludzie. Psychologia stosunków międzyludzkich — Eric Berne
- Doskonała obsługa klienta — Ted Johns
- Bogaty albo biedny po prostu różni mentalnie — T. Harv Eker
- Unscripted Życie wolność przedsiębiorczość — MJ DeMarco
- Emo Sapiens Harmonia emocji i rozumu – Rafał Ohme
- Nieznane więzi natury — Peter Wohlleben
- Adaptywny kod. Zwinne programowanie wzorce projektowe i SOLID-ne zasady – Gary McLean Hall
- Wieczne opóźnienie Zarządzanie projektami IT — Marcin Dąbrowski
- Jak skutecznie współdziałać w miejscu pracy — Kevin Narramore
- Organizacja spotkań Praktyczny poradnik dla tych, którzy nie lubią tracić czasu — Carol R. Anderson
- WikiLeaks od środka — Daniel Domscheit-Berg
- Niepowstrzymany rozwój Jak zmieniać firmę gdy zmienia się rynek — Chris Zook
- Postaw na swoim Praktyczne sposoby jak wywierać wpływ na innych — Nicole Soames
- Magia zmiany Przekrocz własne granice i osiągnij cel — Czarodziej Jakub
- Jak to ogarnąć? Praktyczny poradnik zarządzania szczęściem — Agnieszka Stefaniuk
- Gdzie rosną pieniądze Pierwszy poradnik o tym jak znaleźć pieniądze nie wychodząc z domu — Joanna Dymmel
- Unf*ck yourself Napraw się Mniej myśl więcej żyj — Gary John Bishop
- Stwórz jednorożca Od idei po startup wart miliony — Kubera Grzegorz
- Dowiedz się jak zarabiać online bez inwestycji — Łukasz Cichocki
- Zostań ultrasamoukiem Jak mistrzowsko opanować twarde umiejętności w zadziwiająco krótkim czasie — Scott Young
- Korposzczury Jak kultura korpo zrobiła z naszej pracy piekło — Dan Lyons
- Steve Jobs gdzie pada jabłko iPrzewodnik dla nowej generacji — Jay Elliot
- Wrzuć na luz jak poskromić i uspokoić swój umysł — Serge Marquis
- Wszystko zaczyna się w głowie: a kończy gdy nie działasz — Karolina Cwalina-Stępniak
- Zero Waste: śmieć mniej żyj lepiej — Amy Korst
- Liderzy jedzą na końcu — Simon Sinek
- Nie z miłości Mądrzy rodzice – silne dzieci — Jesper Juul
- Gra bez końca — Simon Sinek
- Mój Ojciec Mój Przyjaciel — André Stern, Arno Stern
- Gospodarka nie-wiedzy — Krzysztof Jan Konsztowicz
- Genialny sprzedawca — Tony Buzan Richard Israel
- Ciągłe dostarczanie oprogramowania Kompletny przewodnik — Eberhard Wolff
- WOPR Życiu na ratunek — Dawid Góra
- Krótka historia czasu Od Wielkiego Wybuchu do czarnych dziur — Stephen Hawking
- O pszczołach i ludziach – Lotte Möller
- Jak umiejętnie sprzedawać i zwielokrotniać dochody — Bettger Frank
- Rio Anaconda – Wojciech Cejrowski
- Nie z miłości Mądrzy rodzice – silne dzieci — Jesper Juul – Książkowe wdrożenia
- Zamiast wychowania O sile relacji z dzieckiem — Jesper Juul
- Bóg i Stephen Hawking. Czyj to w końcu projekt? — John Lennox
- Rodzic jako przywódca stada. Pełne miłości przywództwo w rodzinie — Jesper Juul
Źródła
Obraz główny
- Praca własna
Materiały
- Adaptywny kod. Zwinne programowanie wzorce projektowe i SOLID-ne zasady – Gary McLean Hall
Linki oznaczone (*) są linkami afiliacyjnymi. Jeżeli uważasz, że czerpiesz korzyści z mojej pracy, to kup coś korzystając z powyższego linku. Sprawi to, że dostanę prowizję z afiliacji.