Kategoria: Clean Code

Przykład na zamykanie rozproszonej funkcjonalności do właściwego typu – screencast

Kontynuujemy nagrywanie i montowanie screencastów. Dzisiaj odcinek nr 4. Nabieramy tempa i regularności 🙂 Rozwinęliśmy przykład z ostatniego odcinka (Jak tworzyć dedykowane wrappery do prostych typów) i w praktyce przenieśliśmy funkcjonalność ze statycznych Utilsów do właściwego typu EthereumAddress. Przykładem jest address w Ethereum (zmienione…

Jak tworzyć dedykowane wrappery do prostych typów – screencast

Wrzucamy już 3 odcinek naszej serii. Mamy plany i pomysły na kolejne. Jeżeli Tobie nasuwa się jakiś pomysł, który chciałbyś abyśmy poruszyli – podziel się nim w komentarzu. Inspiracją był kod który musiałem napisać w pracy. Ten problem nie dotyczy tylko mnie. Najpierw powstał…

SRP – Zasada Pojedynczej Odpowiedzialności w praktyce – screencast

Kolejne spotkanie z Adrianem. Na dzisiaj przyniósł kod, który napisał kiedyś na zadaniu rekrutacyjnym. Jedna przykładowa klasa nie stosuje się do Single Responsibility Principle (obiecany ostatnio temat). Przechodzimy przez kilka refactoringów i dyskusję kiedy warto wydzielać osobne serwisy i co w praktyce znaczy SRP…

[StyleCop] od jakiego zestawu reguł wystartować

Korzystam ze StyleCopa od ładnych kilku lat. Zapewnia statyczną analizę kodu pod względem stylu (nie do końca tylko stylu ale to jest aspekt, na którym się skupiam). Jest to niezbędne narzędzie gdy stosuje się Code Review. Po prostu szkoda czasu i ludzkiej cierpliwości, żeby…

Gdzie chowasz swoje hacki?

Jest bug! 😦 Wywołanie takiej funkcji powoduje błąd w rozmwiarze stylowania i tabelka z danymi jest niewidoczna. Na jednym środowisku działa na innym nie działa. Bug trudny do zlokalizowania/zrozumienia/naprawienia. Ale można przyhaczyć 🙂 Okazuje się, że „malutki” timeout załatwia sprawę: Hacki się mszczą, ale…

Uniezależnienie klasy od globalnych stałych

Pierwsze podejście W klasie DataCombiner korzystamy w wielu miejscach ze stałych globalnych zdefiniowanych w klasie ConfigHelper. Gdy chcemy zobaczyć wszystkie miejsca, w których używamy ConfigHelper.ChannelsPerSerialPort, to znajdziemy mnóstwo odwołań i nie będzie się chciało przeglądać wszystkich. Wymieszanie z innymi klasami nie jest dobre. Drugie…

Lessons learned oraz mieszanie logiki z danymi

Ten blog m.in. miał służyć wypisywaniu sytaucji, w których to czegoś się nauczyłem. Zazwyczaj jednak przeważa wstyd, że jeszcze do niedawna takie babole w kodzie waliłem 🙂 Ustaliłem nową kategorię – Lessons Learned. Jest to takie jakby wytłumaczenie, że już tak nie robię, ponieważ…