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
The CQRS/CQS pattern works great, I immediately found a lot of benefits. It helps me to enforce separation of concerns, single responsibility and consistency in my codebase, as well as eliminate all that AOP magic with restoring full control over the code execution. Unfortunately, there is also a boring side of implementing CQRS - THE TYPING.
Have you ever been in a situation when you discovered an exception in the logs that forced you to spend the next couple of minutes - or even hours - figuring out what exactly went wrong? The message was very cryptic and the only useful information that guided you to the crime scene was a stack trace. And after arriving there, you still had no idea what had really happened and what was the culprit. The most frustrating part is that in many cases the reason is very trivial and could be diagnosed immediatel...
Sztuka programowania 2224 dni, 22 godziny, 47 minut temu 139 źrodło rozwiń
Jest bug! 😦 Hacki się mszczą, ale teraz musimy dostarczyć paczkę Kolejny tydzień, kolejny ten sam bug Bądź EXPLICIT
Sztuka programowania 2373 dni, 2 godziny, 35 minut temu 159 źrodło rozwiń
My laptop stores everything on 250 GB SSD hard drive (actually Windows sees it as 223 GB), so from time to time I’m running out of free space. When there is a need I’m starting clearing-up by emptying c:\Users\username\AppData\Local\Temp\ and c:\Users\username\Downloads\ directories (the second one against all appearances is often full of unnecessary files). When this is not enough I use ...
Niech ten konkurs wpędzi Was w "ostrą jazdę bez trzymanki". Kto będzie pierwszy? Na kogo spadnie szacunek .Net'owej społeczności? Do zwycięzcy wyślę ładnie zapakowane 0.7 Jack’a Daniels’a i dziesięć setek Wiśniówki Lubelskiej. Tematem konkursu jest zoptymalizowanie procesu zamiany ciągu bajtów na obiekty. Wersja uznana jest za najszybszą jeśli od poprzedniej najszybszej wersji będzie szybsza o 5% w każdym z 10 powtórzeń testu. Nagroda zwycięscy zostaje przyznana wówczas gdy po pull request z najsz...
Sztuka programowania 2403 dni, 2 godziny, 28 minut temu 145 źrodło rozwiń
Pomysł na ten wpis jest taki, że na początek, napiszę testy jednostkowe, które będą palić się na czerwono, w których zdefiniuje problem. Testy zapalę na zielono poprzez implementację wzorca Adapter. Adapter przekształca interfejs klas na inny, oczekiwany przez klienta. Adapter umożliwia współdziałanie klasom, które z uwagi na niezgodne interfejsy standardowo nie mogą ...
Sztuka programowania 2417 dni, 10 minut temu 174 ź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 2414 dni, 2 godziny, 46 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 2529 dni, 1 godzinę, 22 minuty temu 46 źrodło rozwiń
In order to keep your git environment in a good shape you need to clean up branches from time to time. It is especially difficult in case of build servers which complete pull requests on behalf of developers (like VSTS). It’s easy when you have just a few branches to review, but if you forget to do some cleaning for longer while then it’s getting painful. For sure you do not want to remove effects of your work by accident during cleanup.
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 2526 dni, 2 godziny, 10 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 2527 dni, 1 godzinę, 5 minut temu 90 źrodło rozwiń
Some people used to say that a good programmer doesn’t need to debug his own code. However, sometimes we have a problem with third party libraries usage, for example: there is insufficient documentation or the module contains some bugs. Visual Studio has excellent debugging toolset but this is totally useless without symbols and sources (and this is often the case with third party libraries). Thanks to Reshaper decompiler this shouldn’t be a problem anymore. Before we start debugging we should make so...
It’s a good practice to make all things done at the first approach. But in the real world it’s ot always possible - for example we need to ask customer for clarification and it will take some time, or worst - we don’t have enough time right now to implement things in the right way. In order to adress this issue, a TODO was invented to mark all those places in code requiring additional work. But the main disadvantage of TODO is that we mark code with it, commit it and forget about it. Sometimes somebody a...
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 2548 dni, 1 godzinę, 26 minut 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 2561 dni, 1 godzinę, 24 minuty temu 138 źrodło rozwiń