C# Records — wyrażenie with bez boilerplate’u
C# Records i wyrażenie with – niemutowalny kod bez boilerplate’u Mutowalne klasy w C# to jeden z najczęstszych powodów trudnych do wykrycia bugów, nieczytelnego kodu i…
Czytaj więcej →C# Records i wyrażenie with – niemutowalny kod bez boilerplate’u Mutowalne klasy w C# to jeden z najczęstszych powodów trudnych do wykrycia bugów, nieczytelnego kodu i…
Czytaj więcej →Ręczne parsowanie wzorców tekstowych przez IndexOf/Substring szybko robi się kruche — każdy nowy przypadek brzegowy to kolejny if. Wyrażenia regularne (regex) opisują wzorzec deklaratywnie, jednym ciągiem znaków, zamiast proceduralnie krok…
Czytaj więcej →Każde wywołanie Substring(), array.Skip(1).Take(3) czy string.Split() tworzy w pamięci nową kopię danych. W kodzie, który parsuje raz plik konfiguracyjny, to nieistotne. W kodzie, który parsuje tysiące wierszy na sekundę — te…
Czytaj więcej →Zaczynasz naukę C# i już na starcie trafiasz na ścianę nazw: .NET Framework, .NET Core, .NET 5, .NET 6, .NET 8, .NET 9… W dodatku ktoś…
Czytaj więcej →Wszystkie trzy frameworki robią to samo: uruchamiają metody testowe i sprawdzają, czy wynik jest zgodny z oczekiwaniem. Różnią się atrybutami, sposobem parametryzacji i tym, jak bardzo…
Czytaj więcej →Jeśli czytałeś o Span<T> w C#, znasz już problem: kopiowanie danych przy każdym Substring() czy wycinku tablicy kosztuje pamięć i czas GC. Span<T> to rozwiązuje — ale ma jedno poważne ograniczenie: jako ref…
Czytaj więcej →Tall LINQ vs Wide LINQ – jak pisać czytelny i bezpieczny LINQ w C# Pisanie zapytań LINQ w C# wygląda na proste… dopóki kod nie zacznie…
Czytaj więcej →Kolejny wzorzec z serii opartej na Anatomii wzorca — 8 elementach opisu GoF. Tym razem Command — wzorzec, bez którego trudno wyobrazić sobie funkcję “Cofnij” w jakimkolwiek edytorze. 1.…
Czytaj więcej →TDD w praktyce w C# .NET – Unit Testy, które projektują kod Test-Driven Development (TDD) w C# .NET to jedno z najbardziej niedocenianych narzędzi profesjonalnego programisty.…
Czytaj więcej →Znasz już async/await od strony języka — await zwalnia wątek na czas operacji I/O. Na serwerze ta sama mechanika ma inną stawkę: wątki pochodzą ze wspólnej…
Czytaj więcej →Unit testy w Infrastructure .NET – jak testować File.ReadAllText zgodnie z Clean Architecture Dlaczego Infrastructure psuje testy? Testowanie warstwy Infrastructure w .NET to temat, który regularnie…
Czytaj więcej →“Jakie rodzaje polimorfizmu są w C#?” to pytanie, na które większość kandydatów odpowiada tylko połową prawdy — mówią o override, zapominając, że przeciążanie metod (ObliczPole(int) i ObliczPole(double)) to też polimorfizm, tylko…
Czytaj więcej →Reprezentowanie skończonego zbioru opcji jako stringa albo liczby to zaproszenie do błędów: kompilator nie sprawdzi literówki w "Wysłąne", IntelliSense nie podpowie dostępnych wartości, a porównanie status == "wysłane" po…
Czytaj więcej →Używamy plików cookie do analityki i reklam. Możesz zmienić wybór w każdej chwili.
Polityka prywatności · Polityka cookies