dotnetomaniak.pl

dotnetomaniak.pl - Artykuły z tagiem Wzorce projektowe

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 2001 dni, 6 godzin, 11 minut temu PaSkol 42 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 1999 dni, 22 godziny, 36 minut temu PaSkol 57 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 2002 dni, 23 godziny, 5 minut temu PaSkol 35 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 2002 dni, 6 godzin, 10 minut temu PaSkol 43 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 2004 dni, 20 godzin, 36 minut temu PaSkol 35 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 2008 dni, 12 godzin, 7 minut temu PaSkol 36 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 2008 dni, 23 godziny, 13 minut temu PaSkol 38 rozwiń

W poprzedniej części cyklu utworzyliśmy klasę realizującą wzorzec metody szablonowej. Obecnie będziemy tworzyć klasy potomne, implementujące konkretne typy importu. Warto zauważyć, że w toku dotychczasowych rozważań – czego właściwie nie podkreśliłem – zarysował się ciekawy schemat. Wszystkie pliki tekstowe (o wartościach rozdzielonych separatorem czy o ustalonej długości) są obsługiwane tak samo – inaczej są jedynie interpretowane ich zawartości. Można skorzystać z tej obserwacji i wykorzystać ją ...

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

Sztuka programowania 2009 dni, 12 godzin, 59 minut temu PaSkol 48 rozwiń

Do tej pory udało nam się zrefaktoryzować dwie metody sprowadzając je do jednej i koniec końców uczynić składową dedykowanej klasy. Pozostały jeszcze dwie: odczytująca pliki tekstowe, w których wartości mają ściśle określone położenie w linii oraz odczytująca pliki binarne o dedykowanym formacie. Przyjrzyjmy się jeszcze raz metodzie unifikującej odczyt z plików rozdzielanych dowolnym separatorem ...

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

Sztuka programowania 2011 dni, 11 godzin, 3 minuty temu PaSkol 53 rozwiń

Tak jak obiecałem zajmiemy się teraz przetestowaniem powstałej klasy. Również tym razem wykorzystamy mechanizm automatycznych testów Visual Studio 2010. Czy możemy skorzystać z poprzedniego zestawu testów? Niespecjalnie, nie testujemy już metod, ale konkretną klasę. Poza tym – proszę zauważyć, że nie tworzymy już XML-a, zatem porównanie z plikiem zawierającym XML nie ma szans na pozytywny wynik...

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

Sztuka programowania 2016 dni, 12 godzin, 48 minut temu PaSkol 55 rozwiń

Oto nadszedł moment, aby zająć się refaktoryzacją samego importu danych. Sprawa się jednak komplikuje, albowiem fragmenty kodu odpowiedzialnego za odczyt i interpretację zawartości nie są we wszystkich metodach takie same. Ale dwie z metod są praktycznie identyczne – co stwierdziliśmy przygotowując listę funkcjonalności realizowanych przez metody. Zaczniemy więc od tych metod, być może po ich zunifikowaniu do jednej i w konsekwencji zredukowaniu liczby wszystkich metod do trzech, uda się ...

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

Sztuka programowania 2016 dni, 18 godzin, 19 minut temu PaSkol 63 rozwiń

Zgodnie z zapowiedzią z poprzedniej części, pora przystąpić do definiowania stosownych interfejsów. Zaczniemy od interfejsu wyboru pliku – zgodnie z planem, który ukształtował się w trakcie dotychczasowych rozważań. Jak powinien wyglądać taki interfejs? Jak wiadomo interfejsy definiują pewien zakres funkcjonalności, specyfikują: potrafię robić takie, a nie inne rzeczy – to są moje umiejętności. Jakie powinny być zatem umiejętności interfejsu wyboru pliku? Przyjrzyjmy się dowolnej z czterech metod i ...

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

Sztuka programowania 2018 dni, 20 godzin, 41 minut temu PaSkol 50 rozwiń

Do tej pory udało nam się wyodrębnić kod do refaktororyzacji do oddzielnego pliku i przygotować automatyczne testy, które będą zabezpieczeniem przed naruszeniem funkcjonalności kodu. W toku tych działań umknęła jednak jedna kwestia...

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

Sztuka programowania 2017 dni, 5 godzin temu PaSkol 57 rozwiń

W tej części cyklu przygotujemy testy dla wszystkich metod klasy MethodObject, ale najpierw musimy znaleźć powód niezaliczania pierwszego z przygotowanych testów – testu metody ImportCSV(). Najszybszym i najprostszym sposobem będzie skorzystanie z uruchamiania krokowego, skoro test nie jest zaliczany, to pierwszym, co należy sprawdzić jest kryterium jego zaliczania. Sprawdzimy zatem czy ...

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

Sztuka programowania 2023 dni, 12 godzin, 38 minut temu PaSkol 94 rozwiń

W poprzedniej części niniejszego cyklu mimo usilnych starań nie udało się doprowadzić do przygotowania testów mających kontrolować refaktoryzowany kod. W tej części – mogę to obiecać – testy wreszcie powstaną. Przygotowania testów, zniweczyło występowanie we wszystkich czterech metodach wywołania statycznej metody Show() klasy MessageBox. Co począć z tym wywołaniem? Najbezpieczniejszym rozwiązaniem będzie ...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 4.

Sztuka programowania 2023 dni, 12 godzin, 38 minut temu PaSkol 52 rozwiń

Dotychczasowe działania refaktoryzacyjne doprowadziły do wydzielenia refaktoryzowanego kodu do oddzielnej klasy, w oddzielnym pliku. Aby bezpiecznie przeprowadzić dalsze modyfikacje konieczne jest uzyskanie wiarygodnego mechanizmu weryfikującego ich poprawność. Po prostu potrzebne są testy. W jaki sposób przetestować metody importujące dane? Najlepiej dokonać za ich pomocą importu i sprawdzić czy zaimportowany plik daje oczekiwane dane. Przyglądając się poszczególnym metodom można zauważyć, że wszystkie ...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 3.

Sztuka programowania 2023 dni, 12 godzin, 38 minut temu PaSkol 105 rozwiń

Dawno, dawno temu, kiedy graficzne środowisko Windows zaczęło pretendować do miana systemu, powstały także środowiska dla programistów realizujące ideę RAD, czyli Rapid Application Developmnent, co w tłumaczeniu na polski oznaczało szybkie tworzenie aplikacji. W Windows – początkowo – istniały dwa takie środowiska: Visual Basic i Delphi. Po jakimś czasie pojawiły się kolejne. Ale nie to było istotne, a fakt, że nieświadomie narodził się także nowy styl programowania...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 1.

Sztuka programowania 2022 dni, 23 godziny, 4 minuty temu PaSkol 97 rozwiń

Postem tym chciałbym rozpocząć mini cykl o zastosowaniu wzorców projektowych w języku JavaScript -  wbrew pozorom, w tym języku również można je stosować! Na pierwszy ogień postanowiłem wziąć jeden z moich ulubionych wzorców - strategię. Myślę, że większość z nas, stosowała i stosuje ten wzorzec na co dzień (czasem nawet nieświadomie), jednak dla przypomnienia (za wikipedią): Wzorzec strategii definiuje rodzinę algorytmów, z których każdy zdefiniowany jest w osobnej klasie implementującej wspólny interf...

burczu programator - blog: Wzorce projektowe w JavaScript - Strategia

Sztuka programowania 2109 dni, 12 godzin, 10 minut temu burczu 115 rozwiń

Tak mnie wzięło na wzorce projektowe ostatnimi czasy, dzisiaj coś o o odwiedzającym (wizytatorze). Polska Wikipedia mówi o nim tak odwiedzający.

jsthedeveloper: Wzorce: Odwiedzający / Wizytator

Architektura 2630 dni, 16 godzin, 25 minut temu Paweł Łukasik 259 rozwiń

Autor: W poprzedni wpisie przedstawiłem podstawową koncepcję wzorca projektowego MVVM oraz pokazałem jak złączyć widok (View), będący graficzną reprezentacją naszej logiki biznesowej wraz modelem (Model) przy wykorzystaniu klasy pośredniczącej (ViewModel). Brakującym elementem w przedstawionym przykładzie była implementacja zdarzeń jakie oferują nam kontrolki. Z pomocą przychodzi nam wzorzec projektowy Command, który doczekał się swojej implenetacji w Silverlight 4. Ogólna koncepcja działania polega ...

Wzorzec MVVM – Commanding

Architektura 2900 dni, 7 godzin, 4 minuty temu macko 327 rozwiń

1 2 3 4
.NET DeveloperDays 2018

wrzesień

07.
BBQ4IT
Bielskio-Biala
21.
Dev#
Gdansk, Stary Manez

październik

27.
Dodaj nowe Zobacz wszystkie

Najaktywniejsi

1

Paweł Łukasik (32 873,58)

2

macko (32 816,53)

3

pzielinski (27 178,29)

4

gordon_shumway (21 178,88)

5

paduda (20 336,33)

6

psz750 (13 018,14)

7

rroszczyk (10 393,76)

8

Damian (9 640,27)

9

danielplawgo (7 731,14)

10

arek (6 807,95)

11

burczu (6 214,22)

12

PaSkol (5 393,84)

13

lukaszgasior (4 097,38)

14

jj09 (3 833,06)

15

dpawlukiewicz (3 785,36)

16

AdrianBystrek (3 500,85)

17

spetz (3 433,34)

18

jedmac (3 318,39)

19

http://jakub-flor... (3 224,66)

20

KonradKokosa (2 991,24)