Słowo kluczowe yield – obecne w języku C# od dawien dawna – w prosty sposób może przyczynić się do poprawy wydajności naszego kodu. Jak działa? Gdzie go używać? Jak może przyczynić się do poprawy działania aplikacji? Przekonajmy się...
Sztuka programowania 3233 dni, 11 godzin, 45 minut temu 467 źrodło rozwiń
W internecie znaleźć można mnóstwo sposobów na zwalidowanie modelu. Najlepszym sposobem jest zastosowanie atrybutów z przestrzeni System.ComponentModel.DataAnnotations, ponieważ walidacja odbywa się automagicznie. Niestety kiedy te same atrybuty wykorzystamy do parametrów akcji, to już tak automagicznie nie jest. W tym poście zaprezentuję problem oraz pokażę jak można sobie z nim poradzić.
Sztuka programowania 3233 dni, 11 godzin, 45 minut temu 270 źrodło rozwiń
Początki nowego projektu zawsze są interesujące – można posprzeczać się na tematy możliwych do użycia technologii / wzorców / planowanej architektury. Później, gdy już projekt zastyga i klepiemy tylko kolejne widoki każda kolejna próba takiej dyskusji kończy się tekstem typu: “Ale po co o tym gadać – i tak nic nie zmienimy bo trzeba by całą aplikację przepisywać”.
Sztuka programowania 3234 dni, 10 godzin, 50 minut temu 454 źrodło rozwiń
Wiecie jaka jest definicja wzorca projektowego, prawda? Za wikipedią: “a general repeatable solution to a commonly occurring problem in software design“. Czym zatem będzie antywzorzec? Czymś takim: “a general repeatable anti-solution to a commonly occurring problem in software design“. Czyli: recepta na napytanie sobie biedy. Czerwony pijany znak z napisem: “Nie idź tą drogą”.
Sztuka programowania 3234 dni, 10 godzin, 50 minut temu 169 źrodło rozwiń
Zostałem poproszony przez kolegów z zespołu o przybliżenie im biblioteki MediatR, która zapewnia prostą implementację mediatora który wysyła i obsługuje wiadomości w pamięci. Zaproponowałem ją jako sposób na rozwiązanie problemu zbyt ścisłych zależności pomiędzy domenami w naszej aplikacji.
Sztuka programowania 3235 dni, 23 godziny, 34 minuty temu 398 źrodło rozwiń
Napisany przez paweltymura on Ponieważ mam tą przyjemność refactorować czasem naprawdę stary kod (z czasów .NET 1) to trafiam na takie fajne fragmenty “jak to się robiło kiedyś”. Kod który jest pod moją opieką staram się poprawiać, testować i upraszczać używając najnowszych sztuczek. Do kodu!
Sztuka programowania 3237 dni, 4 godziny, 52 minuty temu 438 źrodło rozwiń
Napisany przez paweltymura on Zainspirowany kolegami z pracy (ale jesteśmy inspirujący ) postanowiłem napisać o dynamic jako elemencie fajnym do napisania ładnego kodu typu Type matching. Możliwe, że jest to też niezła odpowiedź na problem Ayende.
Sztuka programowania 3237 dni, 4 godziny, 52 minuty temu 125 źrodło rozwiń
Zasady SOLID Zasady SOLID: Odwracanie zależności Kamil Jóźwiak No Comments Wszystko powinno być tak proste, jak to tylko możliwe, ale nie prostsze. Albert Einstein Co ma wspólnego kopanie rowów z zasadami SOLID? A to już zależy od podejścia. Jako programista często przenoszę zagadnienia ze świata realnego do kodu. Tym razem będzie odwrotnie, wszystko w imię zrozumienia ostatnią z zasad SOLID – zasady odwracania zależności. Poznanie wzorców projektowych wraz z całym...
Sztuka programowania 3239 dni, 19 minut temu 571 źrodło rozwiń
DbUp jest prostą biblioteką, przeznaczoną do aktualizacji baz danych. Jeśli korzystamy z ORM, zwykle wtedy dany framework posiada już analogiczną funkcjonalność. Na przykład, EntityFramework wspiera migrację, która umożliwia automatyczną aktualizacje tabel i procedur. Z drugiej strony, nie zawsze jest potrzeba korzystania z tak ciężkich rozwiązań. Bardzo popularną biblioteką do odczytu danych z baz jest Dapper. Niestety nie posiada on mechanizmu podobne...
Sztuka programowania 3239 dni, 19 minut temu 170 źrodło rozwiń
Jest wiele czynników, które mówią o jakości kodu, jednym z nich jest jego czytelność. W jaki sposób można, bez dużego nakładu pracy, poprawić czytelność kodu? Czy wielkość i poziom skomplikowania projektu mają wpływ na czytelność kodu? Kto jest odpowiedzialny z powstawanie nieczytelnego kodu i czy czytelność kodu mówi coś o profesjonalizmie programisty? W jaki sposób można zapobiegać a w jaki sposób leczyć zainfekowany kod? „Lepszy jest kod dobrze napisa...
Sztuka programowania 3248 dni, 9 godzin, 48 minut temu 527 źrodło rozwiń
Metoda Split dzieli łańcuch znaków na części w zależności od separatora, który został przekazany w parametrach. Ostatnio jednak natknąłem się na plik CSV, który oprócz tego, że jest rozdzielony przecinkami to na dodatek ma jeszcze ogranicznik pól. Parsowanie takiego pliku metodą String.Split nie będzie prawidłowe. Poniżej implementacja metody String.Split z możliwością zdefiniowania ogranicznika pól(checkSeparator)...
Sztuka programowania 3250 dni, 12 godzin, 58 minut temu 177 źrodło rozwiń
Napisany przez paweltymura on Spotkała mnie niesamowicie miła sytuacja, w której ktoś zrewidował kod podany w poprzednim artykule o pattern matchingu. Code review Blog-posta! How cool is that? Co milsze wykazał błąd w rozumowaniu i podał bardziej prawidłowe rozwiązanie. Artykuł wskazuje jak zmienić poprzednie podejście, by zrobić to lepiej!
Sztuka programowania 3254 dni, 12 godzin, 35 minut temu 155 źrodło rozwiń
Posted on by MJ Po prawie rocznym okresie przerwy od pisania – potrzebowałem tego jak ryba wody, w międzyczasie udało mi się stworzyć kilka wideo tutoriali dla wydawnictwa Edugrafia i popracować nad kilkoma zewnętrznymi projektami (polecam) – wracam z tematem bardzo ważnym dla każdego programisty, czyli mocków...
Sztuka programowania 3254 dni, 12 godzin, 35 minut temu 255 źrodło rozwiń
Pattern Matching dla biednych W językach funkcyjnych istnieje coś takiego jak pattern matching (tłumaczone na “wyrażenie dopasowania” – brzmi okropnie). Generalizując to taki switch który w zależności od jakiegoś warunku, albo typu danego wyrażenia wykona zadaną operację.
Sztuka programowania 3256 dni, 11 godzin, 19 minut temu 310 źrodło rozwiń
Chain Of Responsibility… bo po co Ci switch. Chain of responsibility to jeden z moich ulubionych wzorców. Poznałem go w obecnej pracy dopiero i smutno mi, że tak późno, ponieważ rozświetlił i mój kod i moją twarz Wzorzec ten pozwala unikać switchów i ładnie porządkuje kod. Dodatkowo spełnia w większości wymagania Open-Close principle (o tym za chwilę). Jest bardzo fajny w użyciu w swej podstawowej wersji...
Sztuka programowania 3256 dni, 11 godzin, 19 minut temu 428 źrodło rozwiń
Niejednokrotnie potrzebujemy podejrzeć zapytanie SQL wygenerowane przez EF. Często zdarza się, że takie zapytanie chcemy odpalić na bazie danych i zobaczyć wynik. Można wtedy podpiąć się profilerem do bazy i przechwycić je w całości. Niestety takie rozwiązanie jest bardzo czasochłonne. Można też wywołać metodę ToString() na obiekcie typu IQuarable, jednakże to rozwiązan...
Sztuka programowania 3256 dni, 11 godzin, 19 minut temu 190 źrodło rozwiń
W tym artykule przyjrzymy się ciut bardziej zaawansowanym technikom tworzenia atrap przy pomocy Moq: argument matching, verify, callback. Wszystkie przykłady zostaną zaprezentowane przy użyciu Moq, jednak konkurencyjne frameworki w zakresie niewiele się różnią w zakresie tych technik.
Sztuka programowania 3257 dni, 23 godziny, 40 minut temu 94 źrodło rozwiń
W tym wpisie poruszę temat tego jak bufory „bezpieczeństwa” (cudzysłów nie jest przypadkowy) w taskach wpływają na przedłużenia projektu. Opiszę również jak „kary” za nie wykonywanie zadań w terminie przez developerów przyczyniają się do opóźnień. Zrozumienie istoty problemu jest pierwszym krokiem do ich eliminacji i zwi...
Sztuka programowania 3261 dni, 12 godzin, 22 minuty temu 304 źrodło rozwiń
Moq to najpopularniejszy framework do tworzenia atrap w .NET. W tej części kursu poznamy jego składnię i podstawowe możliwości.
Sztuka programowania 3265 dni, 1 godzinę, 22 minuty temu 140 źrodło rozwiń
Podczas zabaw z Dependency Injection można się trochę zapędzić używając kontenerów, uzależniając od nich cały kod naszej aplikacji. A to źle. Na dobra sprawę logika aplikacji nie powinna nawet wiedzieć z jakiego kontenera korzystamy. Do kontenera nie powinniśmy się przyzwyczajać – jeśli wykorzystujemy go poprawnie, to jego podmiana na inną bibliotekę nie będzie nastręczać żadnych trudności. Tak naprawdę to całkowite pozbycie się kontenera z systemu również powinno być proste. Pisałem już trochę o tym w p...
Sztuka programowania 3265 dni, 15 godzin, 3 minuty temu 190 źrodło rozwiń