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 2162 dni, 22 godziny, 38 minut temu 157 ź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 2203 dni, 22 godziny, 48 minut temu 170 ź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 2318 dni, 21 godzin, 24 minuty 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 2315 dni, 22 godziny, 12 minut temu 142 ź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 2316 dni, 21 godzin, 7 minut 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 2337 dni, 21 godzin, 28 minut temu 194 ź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 2350 dni, 21 godzin, 27 minut temu 136 ź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 2359 dni, 21 godzin, 12 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 2370 dni, 20 godzin, 59 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 2785 dni, 22 godziny, 16 minut temu 507 źrodło rozwiń