Strona głównaUżytkownik

Admu | użytkownik

Admu
Admu
262,02
19 godzin, 49 minut temu
30 marca, 2017
dotnetomaniak.pl

Jak dużo czasu poświęcacie na zrozumienie kodu, gdy trzeba w nim coś zmienić? Czasem kod jest na tyle czytelny, że wszystko widać od razu, a czasami trzeba poświęcić po kilka-kilkanaście godzin, aby zrozumieć co się w nim dzieje. Z czego to wynika? Mam kilka przemyśleń na ten temat.

Źródło: www.admu.pl
Dziel się z innymi:
Prosty kod – ADMU Blog

Sztuka programowania wtorek, 7 kwietnia 2020 05:58:50 GMT Admu 5 spam? źrodło rozwiń

Czy mieliście czasem wrażenie, że wraz z upływem czasu, kod w projekcie staje się coraz gorszy? Że się starzeje? Że jest coraz trudniejszy w utrzymaniu? Że pojawia się coraz więcej miejsc gdzie został zaciągnięty dług techniczny i nie został on potem spłacony? Albo może mieliście w swoich projektach takie miejsca, których nikt nie chciał dotykać? Wyglądały strasznie i każdy się bał, że gdy coś tam zmieni, to coś innego wybuchnie? Zapewne cześć tego kodu została napisana przez nas, część przez naszych ko...

Źródło: www.admu.pl
Dziel się z innymi:
Pogarszający się kod, a refaktoryzacja – ADMU Blog

Sztuka programowania 6 dni, 18 godzin, 57 minut temu Admu 67 źrodło rozwiń

Często słyszę, jak te pojęcia są mylone i używane zamiennie, a tak naprawdę tyczą się zupełnie różnych rzeczy. Pokrótce postaram się przybliżyć oba te terminy, a także zaproponować sposób, jak z nimi żyć.

Dług techniczny, dług technologiczny – ADMU Blog

Architektura 13 dni, 17 godzin, 54 minuty temu Admu 48 źrodło rozwiń

Spotkałem już kilka nazw, a każda z nich wskazywała na tę samą architekturę. Różniły się one co prawda tym, jak był rysowany wykres zależności, ale idea była taka sama. Ogólnie mówiąc, ta architektura wydaje się czymś naturalnym, a mimo wszystko jest wciąż dość rzadko spotykana. Czym się wyróżnia? Tak w skrócie, to w tej architekturze najważniejsza jest logika biznesowa, tzw. „Core” aplikacji. Jest tam zdefiniowane wszystko to, co jest niezbędne dla działania. Wszystko inne jest implementowane w oddziel...

Tagi: architektura
Źródło: www.admu.pl
Dziel się z innymi:
Architektura Clean/Onion/Hexagonal/Ports&Adapters – ADMU Blog

Architektura 27 dni, 18 godzin, 6 minut temu Admu 131 źrodło rozwiń

Czy byliście kiedyś w sytuacji, że dołączyliście do istniejącego już projektu, zagłębiliście się w jego kod i architekturę, a następnie uznaliście, że to jest bez sensu? Że ktoś dał mocno ciała wybierając architekturę pod projekt albo podejmując inne ważne decyzje? Jednak nie macie kogo o to spytać, bo żadna z osób, które podejmowały te decyzje, już w tym projekcie nie pracuje? Może nawet postanowiliście zrobić refaktoryzację i po kilku godzinach/dniach okazało się, że jednak początkowe rozwiązanie było ...

Źródło: www.admu.pl
Dziel się z innymi:
Architecture Decision Record / Decision Log – ADMU Blog

Architektura 33 dni, 18 godzin, 5 minut temu Admu 79 źrodło rozwiń

Gdy piszemy metodę, która ma coś wykonać i ta operacja się nie powiedzie, zastanawiamy się co w takiej sytuacji zrobić: czy lepiej jest rzucić wyjątek, czy może zwrócić rezultat z odpowiednim statusem? Przyjrzyjmy się obu rozwiązaniom.

Źródło: www.admu.pl
Dziel się z innymi:
Wyjątek czy rezultat? – ADMU Blog

Architektura 42 dni, 18 godzin, 34 minuty temu Admu 149 źrodło rozwiń

W poprzednim poście pisałem o bibliotece FluentValidation i jak ją dodać do naszego projektu. W tym poście skupimy się na bardziej zaawansowanych funkcjonalnościach, jakie nam ta biblioteka udostępnia: - Walidacja złożonych właściwości (manualna i automatyczna) - Wspólny walidator właściwości - Walidacja listy - Własny komunikat błędu walidacji - Wspólne walidatory - Warunki walidacji - Reguły zależne od siebie - Wywołanie zwrotne - Asynchroniczna walidacja

Źródło: www.admu.pl
Dziel się z innymi:
Zaawansowana walidacja danych z FluentValidation – ADMU Blog

Narzędzia 55 dni, 19 godzin, 13 minut temu Admu 133 źrodło rozwiń

W prawie każdym projekcie jest potrzebna jakaś walidacja danych. Klasy służące do walidacji można napisać samemu, ale można również skorzystać z gotowych bibliotek. Najbardziej lubię FluentValidation. Jest to biblioteka, która ułatwia tworzenie „walidatorów” – klas zawierających reguły walidacji.

Źródło: www.admu.pl
Dziel się z innymi:
Walidacja danych z FluentValidation – ADMU Blog

Narzędzia 62 dni, 18 godzin, 4 minuty temu Admu 137 źrodło rozwiń

Może się zdarzyć tak, że nasza aplikacja rzuci wyjątek, którego się nie spodziewaliśmy. Nie wygląda to dobrze, jeśli taki nieobsłużony wyjątek trafi do użytkownika. Dodatkowo, jeśli nie otrzymamy informacji o tym, że taki wyjątek wystąpił, trudno będzie nam go poprawić i nie dopuścić do jego powtórzenia. W związku z tym warto w naszej aplikacji dodać globalną obsługę wyjątków i ich logowanie. O tym, jak skonfigurować logowanie, pisałem tutaj i tutaj. W tym poście pokażę kilka sposobów na złapanie takich...

Źródło: www.admu.pl
Dziel się z innymi:
Globalna obsługa wyjątków w C# – ADMU Blog

Sztuka programowania 69 dni, 18 godzin, 6 minut temu Admu 265 źrodło rozwiń

Ostatnio opisałem jak dodać logowanie przy pomocy biblioteki Serilog do naszej aplikacji. W tym poście postaram się pokazać jak można je skonfigurować.

Źródło: www.admu.pl
Dziel się z innymi:
Konfiguracja logowania w C# – Serilog – ADMU Blog

Narzędzia 118 dni, 18 godzin temu Admu 124 źrodło rozwiń

Chyba każdy z nas używa logowania w swojej aplikacji. Jeśli jednak ktoś tego nie robi, to zachęcam zacząć. W innym przypadku może być mu trudno zareagować, kiedy coś się wysypie. Postaram się w kilku prostych krokach pokazać, jak dodać logowanie do naszej aplikacji z wykorzystaniem Serilog.

Źródło: www.admu.pl
Dziel się z innymi:
Logowanie w C# – Serilog – ADMU Blog

Narzędzia 125 dni, 18 godzin, 4 minuty temu Admu 160 źrodło rozwiń

Gdy tworzymy testy jednostkowe bardzo często musimy coś „zmockować” (czyli stworzyć sztuczny obiekt, którego będziemy używali w trakcie testów zamiast prawdziwej implementacji). Niestety czasem bywa tak, że nasza klasa ma dużo zależności, a do naszego testu potrzebujemy tylko niektórych z nich. Mimo to musimy stworzyć mock dla każdej z zależności, bo inaczej nie będziemy mogli wykonać testu. Czasem bywa też tak, że potrzebujemy dodać nową zależność do istniejącej klasy, a potem trzeba przerobić wszystkie...

Tagi: C#, Narzędzia, testy
Źródło: www.admu.pl
Dziel się z innymi:
Automatyczne tworzenie mocków – AutoMoq – ADMU Blog

Narzędzia 139 dni, 18 godzin temu Admu 123 źrodło rozwiń

Podczas pisania testów (czy to jednostkowych, czy integracyjnych, czy e2e) prawie zawsze musimy stworzyć obiekt z danymi. Czasem jest to obiekt wejściowy, czasem wyjściowy. Z reguły nie interesuje nas większość pól danego obiektu, a jedynie kilka konkretnych. Mimo to musimy uzupełnić wszystkie pola, aby aplikacja zachowywała się poprawnie. Tu z pomocą może nam przyjść biblioteka AutoFixture.

Tagi: C#, Narzędzia, testy
Źródło: www.admu.pl
Dziel się z innymi:
Automatyczne tworzenie obiektów z danymi – AutoFixture – ADMU Blog

Narzędzia 153 dni, 18 godzin, 6 minut temu Admu 110 źrodło rozwiń

Czasem można usłyszeć rozmowy na temat tego czy warto pisać kod dobrej jakości. To nie jest tak, że są osoby, które uważają, że jakość jest nieważna. Zazwyczaj mówią one coś w stylu: "obecnie pędzimy z funkcjonalnościami, aby wyrobić się w czasie, więc piszemy oprogramowanie gorszej jakości". Istnieje jakoby przeświadczenie, że jakość można wymienić na szybkość...

Źródło: www.admu.pl
Dziel się z innymi:
Jakość czy szybkość? – Design Stamina Hypothesis – ADMU Blog

Sztuka programowania 173 dni, 19 godzin, 8 minut temu Admu 114 źrodło rozwiń

Od zawsze trochę męczyło mnie to, że jak dodaję nowy interfejs wraz z klasą go implementującą, to muszę pamiętać jeszcze o rejestracji go w kontenerze wstrzykiwania zależności. Aż w pewnym momencie trafiłem na bibliotekę Scrutor i od razu programowanie stało się przyjemniejsze.

Źródło: www.admu.pl
Dziel się z innymi:
Automatyczna rejestracja typów w C# – ADMU Blog

Narzędzia 181 dni, 19 godzin, 12 minut temu Admu 304 źrodło rozwiń

Najaktywniejsi

1
(32 895,6)
2
(32 816,53)
3
(27 178,29)
4
(21 178,88)
5
(20 336,33)
6
(13 018,14)
7
(10 512,3)
8
(9 775,28)
9
(8 388,28)
10
(6 822,96)
11
(6 214,22)
12
(5 393,84)
13
(4 127,41)
14
(4 026,73)
15
(3 908,07)
16
(3 599,64)
17
(3 448,35)
18
(3 318,39)
19
(3 224,66)
20
(3 117,41)