ReSharper

ReSharper is an extremely powerful productivity tool for C#/.NET development in Visual Studio. (This post will not cover its actual features, rather, it will cover my opinion of the tool in general. If you want features, please look at the original page.)

My experience with ReSharper (C#)

For a long time, I was not able to use this tool, as I could not afford it, (ReSharper licenses start at $299 for the normal, not Ultimate version) but was able to acquire an open source license for my open source development.

Since then, I have used ReSharper quite a bit, and here are my general opinions:

The Good

  • Helpful refactorings save time and keystrokes, and also help improve code readability and quality
  • There are tons of refactorings, even fixing small issues you might overlook sometimes, or language tricks allowing you to write something in a more concise manner
  • Excellent support for all the new syntactic sugar in C# 6.0
  • Smart code cleanup (renames badly named identifiers, organizes namespaces to folders (in case you’ve changed something)
  • Smart referencing and imports (if you paste in some code, it will offer to add using statements for any imported types. If the assembly isn’t referenced, it will offer to reference it for you)

The Bad

  • Resource intensive - Obviously, you shouldn’t install ReSharper on a machine that can barely run Visual Studio. But ReSharper can really, really slow down your workflow. In my use, I noticed that the performance hit is far larger on computers with HDDs than SSDs, significantly slowing down startup time of Visual Studio. This can be somewhat mitigated by suspending ReSharper when you don’t need it. I have another suggestion too, see the end of the post!
  • Expensive - ReSharper is a great tool, but in my opinion, the entry level pricing is too expensive, especially considering that it is licensed under a subscription model. A change I would make to ReSharper’s pricing model would be to offer some kind of perpetual license with maybe 1-2 years worth of updates. Additionally, I would offer a cheaper, entry-level option priced under $100 providing some lighter functionality. A great example of such a product is ICSharpCode’s Refactoring Essentials plugin for Visual Studio, my go-to alternative to ReSharper. While ReSharper is much more feature-rich, Refactoring Essentials is free and open source. I obviously understand JetBrains’s motivation to keep ReSharper proprietary, but there should be a cheaper, more affordable option.

Overall

ReSharper is an extremely powerful, productivity-boosting tool that every C# developer should consider acquiring. However, he or she should be aware of the potential performance hit that comes as a result of using ReSharper. He or she should also carefully evaluate whether they should make the relatively costly investment in ReSharper or use a similar open-source tool, namely Refactoring Essentials.

Now, the other suggestion I mentioned:

Project Rider looks very promising. It is a cross-platform C#/.NET IDE with all of ReSharper’s power baked in.

At the time of writing, a great way to balance performance with productivity is to use Visual Studio when you don’t need ReSharper, and use Refactoring Essentials instead, and to use Rider when you do want advanced inspections and refactoring.

A final note: Microsoft’s built-in refactoring with Roslyn has been steadily improving! Even now, it is possible to survive with only default inspections, though I highly recommend ReSharper or Refactoring Essentials as well.