The .NET craftsman toolbox
A good craftsman should use the good tools to achieve quality software development. I would like to share with you the few tools that really change my way to work (one could say that change my life) for my .Net projects.
I am pretty sure you already know it. If you don't, go and download it //www.jetbrains.com/resharper/, at least to try it a few months. If you have to use only one tool, this is THE one. I’ll try to describe the main advantages for me, but I will probably miss a few:
- Continuous code inspection (no need to compile to see syntax errors)
- Help in refactoring (rename, change arguments order or number…)
- Unused variable and unused namespaces check
- Visibility optimization (warn you if you have a public function that could be protected or private)
- Policy check (following rules that you can customize for each project, can be combined with stylecop)
- Automatic namespace check (based on your folder names)
- Linq conversion of your loop (pretty cool to learn how to use effectively Linq)
Basically, you will see resharper underlines some stuff in your code. You will use a shortcut to see what it proposes to resolve the problem, and you will use it to resolve the problem. So in the end you will type some code, use alt+enter to improve it, and type some more code.
Be careful it becomes very quickly a habit. Last time gmail underlines a word in the email I was typing, I try alt+enter to fix it.
Anyway, just use it. Yes, it costs some money and you need a SSD to use it without too much latency. Buy the license and a SSD, it worth it anyway. And if your company does not want to buy your team SSDs and other licenses than Visual Studio, Just leave it. And find some place where they trust their development team. And where they use Resharper.
Believe me, after a few months, you will wondering how you have ever lived without it.
Ncrunch is an automated concurrent testing tool for Visual Studio. It seems to me that it is really less known than Resharper. It is a shame because it is as useful as Resharper, and because the concept of infinite testing is well known in the Java Community. And it actually does more than infinite testing. So, what does NCrunch allow?
- It automatically runs all impacted tests when you modify a line of code (this is infinite test, and this is really awesome when your are doing TDD)
- It displays real-time code coverage (so you can see in green a loc used by a correct test, in red a loc used by a failing test, and in white a loc not covered by any tests)
- It highlights slow-running lines of code
Yeah, I hear you again “but it costs money and I need an SSD”. Do you think that a formula 1 champion could win any competition in a Renault Twingo? To be more productive, you need good tools. Good tools could cost money. And it should not be a problem because they will earn you more than their cost.
NFluent allows you to produce fluent assertion for your .NET unit testing. What’s a fluent assertion? Well, if you could write:
It is more fluent than
And we craftsmen really like to write fluent code.
I will add that Nfluent is free, compatible with MSTests, Nunit, Xunit and Specflow, and developed by some awesome French craftsmen. Now you have no excuse to not use it.
TFS build notification
It allows you to know when your coworkers push something on the TFS source control. Convenient isn’t it? It is even better to know in real time if the build is broken or not, without starting any browser or browsing through visual studio. You have a little popup each time a build is done on the server. It is simple and include in visual studio, but I often see teams that doesn’t know it exists.
Of course it is usefull only if you are using TFS.
I hope these 4 tools will be as useful for you as there are for me. And what about your toolbox? Do you have any recommendation about other good tools to help me to be more productive as a software craftsman?