dotnetomaniak.pl - Artykuły z tagiem czysty kod

Skomplikowane aplikacje mogą wymagać skomplikowanego kodu. Jeżeli jego złożoność wynika ze złożoności modelowanego problemu to wszystko jest ok. Gorzej, jeżeli złożoność kodu wynika ze… złożoności kodu. W takim przypadku mówimy o złożoności przypadkowej.

Dziel się z innymi:
Złożoność przypadkowa | Piotr Perak

Architektura 3749 dni, 11 godzin temu trzyPe 311 źrodło rozwiń

Zastanawiacie się co to takiego ten tunel kodu? Otóż chodzi tutaj o specyficzny stan świadomości, z dużym skupieniem i widzeniem tunelowym, w który mogą wejść programiści tworzący kod. Można o nim przeczytać np. w książce autorstwa Roberta C. Martina "Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów", choć tam nosi on nazwę strefy lub przepływu (flow). Zgodnie z opisem we wspomnianej książce, stan ów charakteryzuje się tym, że znajdujący się w nim programiści czują się ...

Me z .NET tete-a-tete » Tunelem kodu pędzę do przodu

Sztuka programowania 3800 dni, 10 minut temu PaSkol 308 źrodło rozwiń

Trafiłem ostatnio na tekst o nadużywaniu var. Przede wszystkim zafrapowało mnie użycie pojęcia „nadużywanie„, bo sugerowało, że podczas tworzenia kodu należałoby (oprócz wielu reguł) brać jeszcze pod uwagę czy danej konstrukcji nie używa się zbyt często (czyli nadużywa). Tylko jakie w takim razie powinno być kryterium umożliwiające stwierdzenie, czy coś jest nadużyciem, czy nie? Czy jeśli ...

Me z .NET tete-a-tete » Oto moja perspektywa: „var” się nie da nadużywać

Sztuka programowania 3842 dni, 19 godzin, 47 minut temu PaSkol 345 źrodło rozwiń

Z pewnością sporo osób zetknęło się z wzorcem MVVM (Mode View ViewModel), należącym do wzorców prezentacji (takich jak MVC lub MVP – z którego nota bene się on wywodzi), albo o nim słyszało. Wykorzystuje się go w oprogramowaniu wykorzystującym Windows Presentation Fundation (WPF). Nie zamierzam się tutaj wgłębiać w meandry tego wzorca. Chciałem się tylko odnieść do pewnej jego (nomen omen) właściwości, dotyczącej sposobu powiadamiania widoku, że właściwość modelu uległa zmianie. Dokonuje się tego ...

Me z .NET tete-a-tete » Wzorcu wszak twoją jest rolą utrzymać kod pod kontrolą.

Sztuka programowania 3947 dni, 2 godziny, 19 minut temu PaSkol 170 źrodło rozwiń

Zgodnie z obietnicą wypada przedstawić drugi z rezultatów inspiracji wynikłej ze swoistego dialogu (diaBlogu ;) ) pomiędzy Krzysztofem Morcinkiem a mną. Tym razem skupię się na następującym fragmencie jego wpisu ...

Me z .NET tete-a-tete » Bacz, bo w gąszczu uogólnień – skryty – rwie uproszczeń strumień.

Sztuka programowania 3979 dni, 8 godzin, 23 minuty temu PaSkol 166 źrodło rozwiń

Zapewne każdy profesjonalny programista zna zasadę DRY, której nazwa jest zarazem skrótem jej treści Don’t Repeat Yourself czyli zalecenia Nie Powtarzaj Się. Najczęściej stosuje się ją, by przeciwdziałać powielaniu kodu wykonującemu tę samą czynność (czy to przez jego niepotrzebne, ponowne napisanie czy też przez zwykłe przeklejanie). To co ciekawego w tej regule, to fakt, że w swej treści skierowana jest ona do ...

Me z .NET tete-a-tete » Refaktoryzator wprawny zmienia kodu smak … w wytrawny.

Sztuka programowania 4044 dni, 2 godziny, 31 minut temu PaSkol 210 źrodło rozwiń

Nie mam zamiaru nikogo indoktrynować. Nie mam zamiaru dyskutować o wyższości tego nad tym i owego nad tamtym. Zamierzam natomiast przedstawić parę zalet regionów oraz powód, dla którego podobają się właśnie mi. A skoro już zdradziłem, że wpis jest subiektywny i tendencyjny, to zacznę właśnie od tego powodu. Z urodzenia jestem ...

Tagi: czysty kod
Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » Jedni ich nie lubią wcale, ja regiony sobie chwalę.

Sztuka programowania 4044 dni, 2 godziny, 31 minut temu PaSkol 200 źrodło rozwiń

Kiedy wprowadza się reguły? Zazwyczaj wówczas, kiedy zjawiska zachodzące w danym środowisku zaczynają wymykać się spod kontroli. Weźmy np. pojazd komunikacji miejskiej. Jeżeli jest on praktycznie pusty, to można z niego wysiadać w tym samym momencie, w którym ktoś chce wsiąść – ta garstka pasażerów wyminie się w drzwiach w sposób intuicyjny. Jeśli jednak liczba wysiadających jak i wsiadających zwiększy się, to konieczna będzie już jakaś regulacja – np. ...

Me z .NET tete-a-tete » Ma reguła konsekwencje, więc pytam: dlaczego dopatrywać się w nich czegoś niepożądanego?

Architektura 4192 dni, 2 godziny temu PaSkol 105 źrodło rozwiń

Reguły, zasady – przemyślenia na ich temat ostatnio opanowały mój umysł, więc naturalną konsekwencją jego stanu są kolejne moje wpisy. I czuję, że to jeszcze nie koniec. Na blogu ostatnio jest bardziej filozoficznie, ale tak bywa, kiedy dokonuje się retrospekcji. Dziś co nieco o regule nazywania warunków (wywodzącej się z reguły wydzielania metody). Chodzi w niej o to, aby wyrażenia logiczne występujące w kodzie...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » To wciąż zasada, czy już przesada?

Sztuka programowania 4197 dni, 23 godziny, 10 minut temu PaSkol 191 źrodło rozwiń

Informatyka z racji swojego sformalizowania kocha się w regułach. Nie można się praktycznie ruszyć, by w jakąś nie wdepnąć. Zaczynam się powoli zastanawiać, czy nie mamy tutaj do czynienia ze zjawiskiem podobnym do eksplozji klas – eksplozją reguł. Bezsprzecznie do tego stanu rzeczy przyczyniają się także blogi. Widywałem na blogach wpisy, w których ...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » Owszem, reguły trzeba stosować, ale nie dajmy się im zwariować.

Sztuka programowania 4203 dni, 5 godzin, 43 minuty temu PaSkol 219 źrodło rozwiń

Komentarze z reguły są złe, zamiast nich należy pisać czytelny kod (czyli kod, który czytany wyjaśnia swoje działanie). Są złe bo się dewaluują, tj. po jakimś czasie nie korespondują z kodem, opisują go w nieprawdziwy sposób, bo kod się zmienił. Jest to prawda, której obecnie nie trzeba chyba już nikomu tłumaczyć, przynajmniej tym, którzy trzymają rękę na programistycznym pulsie. Czy zatem rezygnując z komentarzy oraz pisząc czytelny kod pozbyliśmy się całego ich zła? Niekoniecznie, ono czeka cierpliwie...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » Chociaż pozbyłeś się komentarzy ich zło się w kodzie wciąż może zdarzyć.

Po odłożeniu kodu na weekend, jego przeglądzie i uwzględnieniu komentarzy, można uznać proces refaktoryzacji za zakończony. Pisząc „proces” mam tu na myśli wykonanie refaktoryzacji o ściśle określonym celu – w tym przypadku było to stworzenie mechanizmu importu, który zastąpi używany obecnie. Nie wchodziły zatem w ten proces...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Podsumowanie.

Sztuka programowania 4286 dni, 23 godziny, 49 minut temu PaSkol 84 źrodło rozwiń

Ostatnią z czynności refaktoryzacyjnych będzie przystosowanie dotychczasowej klasy MethodObject do używania powstałych w trakcie refaktoryzacji klas. Jak można sprawdzić w części drugiej, klasa ta posiadała cztery publiczne metody: ImportCSV(), ImportTabSeparated(), ImportFixed(), ImportBinary(). Metody te były następnie wykorzystywane przez interfejs użytkownika do wykonywania odpowiednich importów. Te metody muszą zostać zachowane, zmieni się natomiast ich implementacja. Zmianie ulegnie też...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 19.

Sztuka programowania 4295 dni, 10 godzin, 28 minut temu PaSkol 35 źrodło rozwiń

W dotychczasowym procesie refaktoryzacji udało nam się stworzyć elastyczny mechanizm importu – uzyskaliśmy tym samym podstawową funkcjonalność w zadowalającej postaci. Pora zająć się pozostałymi operacjami, które są niezbędne, aby uzyskać kompletną, pierwotną funkcjonalność refaktoryzowanego kodu. Na implementację oczekują przecież: zdefiniowany na początku interfejs IFileSelector i jego pochodna IFilteredFileSelector. Konieczne jest też zaimplementowanie ...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 18.

Sztuka programowania 4296 dni, 18 godzin, 3 minuty temu PaSkol 43 źrodło rozwiń

Jak obiecałem – dziś uzupełnimy dotychczasowy zestaw testów o nowe testy. Co będziemy testować? Jeśli ktoś uważnie śledzi ten cykl zapewne oczekuje, że – zgodnie z wcześniejszymi zapowiedziami – przygotujemy test sprawdzający uruchamianie wszystkich metod biorących udział w przetwarzaniu pliku oraz dostosujemy stare testy sprawdzające powiadamianie o postępie przetwarzania. Tak – takie testy zostaną napisane. Ale najpierw utworzymy testy, których do tej pory nie było. Proszę zauważyć, że ...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 17.

Sztuka programowania 4295 dni, 10 godzin, 28 minut temu PaSkol 59 źrodło rozwiń

W tym wpisie zaprezentuję dwie klasy dziedziczące po FileOfValuesReader i realizujące odczyt z plików tekstowych oraz binarnych. Obie klasy będą współpracować z odpowiadającymi im klasami wyodrębniającymi wartości z odczytanej zawartości. A ponieważ dopełnią one całości mechanizmu importu, to przygotuję także odpowiednie testy, które pozwolą upewnić się, że mechanizm importu nadal działa tak samo. Jako pierwszą zaimplementuję ...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 16.

Sztuka programowania 4298 dni, 10 godzin, 57 minut temu PaSkol 37 źrodło rozwiń

Nadeszła pora, by doprowadzić do współpracy klas odczytujących pliki i klas wyodrębniających z nich dane. Aby ta współpraca była jednak w ogóle możliwa – klasa FileOfValuesReader musi zostać zmodyfikowana, albowiem musi być możliwe „wstrzyknięcie” do niej obiektu implementującego interfejs IValuesExtractor. W rezultacie konstruktor zyska jeszcze jeden, dodatkowy parametr, poprzez który będzie można przekazać odpowiedni interpreter danych. Ponieważ ów interpreter trafia od razu do klasy bazowej ...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 15.

Sztuka programowania 4297 dni, 18 godzin, 1 minutę temu PaSkol 45 źrodło rozwiń

W poprzedniej części uczyniliśmy spostrzeżenie, że z dotychczasowych klas można wyodrębnić niezależną funkcjonalność – interpretację odczytywanych danych. Obecnie zajmiemy się jej implementacją. Nie będzie ona specjalnie trudna, ponieważ większość kodu już istnieje – zawierają go metody Extract() klas potomnych klasy FileOfValuesReader. Przypomnijmy je sobie wszystkie...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 14.

Sztuka programowania 4300 dni, 8 godzin, 27 minut temu PaSkol 36 źrodło rozwiń

Przygotowane w poprzedniej części testy uwidoczniły pewne ułomności zaimplementowanych klas – chcąc przetestować funkcjonalność powiadamiania o postępie przetwarzania pliku, konieczne było wykonanie samego importu. To nasuwa wniosek, że powiadamianie o postępie zależy od samego procesu importu. Co więcej, w jednym z testów tej funkcjonalności nie udało się początkowo uzyskać pozytywnego wyniku. To nasuwa kolejny wniosek – powiadamianie o postępie zależy od konkretnego typu importu. To już bardzo daleko i...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 13.

Sztuka programowania 4303 dni, 23 godziny, 59 minut temu PaSkol 37 źrodło rozwiń

Pora po raz kolejny napisać testy dla uzyskanego kodu. Zapewne niektórzy zaczynają być znużeni tą ciągłą potrzebą pisania testów. Cóż – jest to jedyny sposób na zapewnienie odpowiedniej jakości kodu. A pisząc „odpowiedniej” mam na myśli jedynie jego poprawność. Na pocieszenie uchylę rąbka tajemnicy – nasz kod jest coraz lepszy, coraz bardziej elastyczny, a to przekłada się także na pisanie testów. W poprzednich testach udało się wykorzystać jedynie dane użyte w testach wcześniejszych. Obecnie uda się ...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 12.

Sztuka programowania 4304 dni, 11 godzin, 4 minuty temu PaSkol 39 źrodło rozwiń

1 2 3

Najaktywniejsi w tym miesiącu