Dzisiaj chciałbym podzielić się zestawem reguł, który w różnych projektach stosuję od lat. Pod to stworzyłem repozytorium https://github.com/kmorcinek/dotnet-tools-settings Korzystam ze StyleCopa od ładnych kilku lat. Jest to niezbędne narzędzie gdy stosuje się Code Review. Po prostu szkoda czasu i ludzkiej cierpliwości, żeby ręcznie wytykać komuś coś, co może wychwycić narzędzie.
Strona głównaUżytkownik
https://krzysztofmorcinek.wordpress.com/ | użytkownik
Jest bug! 😦 Hacki się mszczą, ale teraz musimy dostarczyć paczkę Kolejny tydzień, kolejny ten sam bug Bądź EXPLICIT
Sztuka programowania 2600 dni, 4 godziny, 4 minuty temu 159 źrodło rozwiń
Całkiem normalną sytuacją jest, gdy każdy sam sobie instaluje server bazy danych. Wtedy u każdego ta nazwa może być różna. Ktoś zainstalował wersję SQL Express, ktoś inny ma już kilka wersji SQL (2008, 2012, 2014, 2016, …) różnie nazwanych, u kogoś innego w poprzednim projekcie instancja musiała się konkretnie nazywać.
Sztuka programowania 2641 dni, 4 godziny, 14 minut temu 172 źrodło rozwiń
Opiszę pomysł, który zobaczyłem w projekcie i bardzo mi się spodobał. Nie będę opisywał możliwych modyfikacji, które sobie wyobrażam. Rozumiem też, że będąc w innym projekcie (Context is King!) musiałbym go dostosować. Gdy piszemy kod to zazwyczaj jesteśmy w „Debug”, i w takim trybie nie chcemy dostawać Errorów do StyleCopa. Powodów może być wiele: kod experymentalny, kod przeklejony z internetu, z poprzedniego projektu, itp. Albo po prostu każdy ma inną wrażliwość na to jak formatować kod. I lokalnie n...
Sztuka programowania 2756 dni, 2 godziny, 50 minut temu 46 źrodło rozwiń
Zawsze przychodzi ten moment gdy trzeba rozwiązać buga na produkcji i jedyne co mamy to logi aplikacji. Okazuje się oczywiście, że nie ma wszystkich informacji w tych logach. Nie ma nawet całkiem podstawowych informacji...
Sztuka programowania 2753 dni, 3 godziny, 38 minut temu 146 źrodło rozwiń
Moje motto na temat Unit Testów i wielu innych rzeczy: Less Unit Testing Dogma More Unit Testing Karma Nie ma co pisać wstępów, trzeba przeczytać krótkiego i zwięzłego PDFa The Way of Testivus
Sztuka programowania 2754 dni, 2 godziny, 33 minuty temu 90 źrodło rozwiń
Czy oglądając video z konferencji nie nudzicie się czasem? Może za wolno? Zdecydowanie tak. Kiedykolwiek to pokazuję to każdy się zgadza, że można przyspieszyć. Np. w youtube w prawym dolnym rogu klikamy Settings->Speed i dostaniemy wybór jak po prawej.
Powiedzmy, że mamy projekt, w którym wcześniej nie znano Resharpera. Otwierając taki kod „wszystko świeci” na różne kolory sugerując, że mamy w kodzie wiele problemów. Moje doświadczenie programistyczne mówi mi, że warto wysprzątać te miejsca, ponieważ na wstępnie z automatu poprawi się nam wiele bugów i znacznie zwiększy czytelność. I tutaj staje się przed problemem ...
Angielski tytuł brzmiałby „It’s not what you read, it’s what you ignore” bo jest on tytułem znakomitego wystąpienia Scotta Hanselmana: Od siebie mogę dodać kilka rzeczy, które robię: Email prywatny w pracy jest w nieużywanej przeglądarce, więc prawdopodobieństwo jego przypadkowego przeglądania jest bardzo niskie. Wyłączenie powiadomień mailowych na komórce (zarówno głosowych jak i wizua...
Chciałbym dziś napisać o jednej z metod poszerzania wiedzy. Od zawsze nazywało się to dla mnie The Morning Brew. Jak sam autor pisze: The Morning Brew is a daily .NET software development link blog published by Chris Alcock a software developer from the north west of England. Chris ma w tym doświadczenie, to już #2468 odcinek, pierwszy był 10 lat temu!
Chcemy rzucić wyjątkiem, gdy mamy przypadek nieobsłużony poprzez case’y. Na przykład gdy pojawiła się nowa wartość enuma Shape. throw EnumGuard.CreateMissingEnumException(nameof(shape), shape);
Sztuka programowania 2775 dni, 2 godziny, 54 minuty temu 197 źrodło rozwiń
Najbardziej popularnym Value Object jest Money. W tym przykładzie instancje możemy tworzyć tylko poprzez metode Create() (taka fabryka). Konstruktor jest prywatny. Pewnie dla tego przykładu lepiej mieć po prostu publiczny konstruktor z dwoma parametrami, ale mam wiele przykładów innych bardziej skomplikowanych Value Objects, gdzie podejście z prywatnym konstruktorem i kilkoma fabrykami walidującymi różne przypadki ma sens.
Sztuka programowania 2788 dni, 2 godziny, 53 minuty temu 138 źrodło rozwiń
Staram się automatyzować wiele rzeczy. Build skrypt przechodzący lokalnie i na serverze po każdym commit’ie to podstawa. Można to w prosty sposób zrobić. Jest jednak część rzeczy, które są zbyt trudne do automatyzacji, albo po prostu nie da się ich zautomatyzować. ...
Sztuka programowania 2797 dni, 2 godziny, 39 minut temu 113 źrodło rozwiń
Buduję właśnie nugeta z solucji, która ma ponad 20 projektów. Ok 10 z nich ma wylądować w paczce. Paczka ta jest silnikiem obliczeniowym i będzie konsumowana przez większy system wewnątrz firmy. Nuget będzie hostowany tylko wewnętrznie. Wygląda to tak ...
W pliku AssemblyInfo.cs zawsze widzę dużo śmieci. Przy kilkunastu/kilkudziesięciu projektach tych śmiecie jest liniowo więcej. Może czasem niektóre z nich w Waszym kontekście są potrzebne. Moje doświadczenia są jednak takie, że ten plik mógłby być tylko jeden i wyglądać: [assembly: System.Reflection.AssemblyVersion("1.0.0")]
Architektura 2808 dni, 2 godziny, 25 minut temu 200 źrodło rozwiń
W projekcie Webowym z bogatą logiką FrontEndową zawsze w pewnym momencie stajemy przed problemem synchronizacji klas, które mamy w C# z tymi po stronie FE. Jednym z ułatwień jest korzystanie z TypeScript, który udostępnia silne typowanie po stronie FE. Tutaj na scenę wchodzi TypeLITE
Tak IMHO powinien wyglądać dobrze napisany enum: public enum DocumentStatus : byte { Draft = 1, Approved = 2, UnderRevision = 3, Released = 4 } Nie enumerujemy od zera Pozbyć się wartości Undefined Dziedziczyć po byte? Czy nadawać wartości liczbowe wszystkim?
Sztuka programowania 3223 dni, 3 godziny, 42 minuty temu 507 źrodło rozwiń