I recently (finally) upgraded to Visual Studio 2013. One unfortunate consequence of this was that the version of Resharper I was using (v7) was no longer supported. I was disappointed to find that my license was not enough to obtain a free upgrade, therefore I was faced with a choice: either buy a license for Resharper 8, or try programming without Resharper in the hope that VS2013 would offer enough features to allow me to achieve similar levels of productivity and flow. There is a certain appeal to the idea of learning to code without Resharper. We all know dependencies should be minimized.
So I decided to try life without Resharper.
I lasted 3 days.
Admittedly, VS2013 does offer adequate or even superior equivalents for many of Resharper’s features. For example, I actually prefer Visual Studio’s unit test runner to Resharper’s. It seems to run faster and is more reliable. Extracting a method is also fine using Visual Studio alone. However there are a number of features which make programming with Resharper not only faster, but more satisfying.
The Alt-Enter Panacea
The Alt-Enter cure-all keyboard shortcut offered by Resharper is genius. The official name for this command is ‘show action list’, but the brilliant thing about it is its sensitivity to your current context. Resharper knows what actions you may want to perform given the position of your cursor. You might want to rename a variable to adhere to coding standards, rename a file to match the name of a class, generate a method stub for some calling code you’ve just written, remove an unused variable, remove unused
using statements… the list goes on. There is no equivalent context-specific intelligence in Visual Studio. The best we can do is to learn the keyboard shortcut for each useful action, but there are several actions offered by Resharper’s Alt-Enter command that appear to have no equivalent in VS2013. For example, the only way I can see to locate and report on unused variables without Resharper is through Visual Studio’s static code analysis feature. This can either be run manually on demand, or each time you build your project. You are then required to manually remove each occurrence of dead code that is reported. Compare this to Resharper which greys out dead code as you write it, and lets you quickly and automatically remove it using Alt-Enter. The same can be said about many of Resharper’s best features. Resharper’s analysis is dynamic, whereas Visual Studio’s is static. The significance of this difference should not be underestimated. With dynamic analysis, it is far easier to gain and maintain momentum as you code.
Go To Implementation
In trying to code without Resharper, it wasn’t long before I needed a way to go directly to the implementation of a method, from calling code which referenced an interface. No problem, I thought, I’ll just look up the keyboard shortcut. After a little Googling, I was amazed to find that Visual Studio has no ‘Go To Implementation’ shortcut. I still can’t believe this. We live in a world where we are told (quite rightly) to favour dependency injection in the form of interfaces. Therefore a huge portion of our calling code will call methods defined on interfaces. The value of the ‘Go To Definition’ command is obvious: we want to look at the code contained within a called method. Thus, the ‘Go To Implementation’ command is just as valuable. Yet Visual Studio does not have it. The closest equivalent I could find was a 3-step process described in this stackoverflow discussion. A 3 step process! This is simply not good enough and is one of the key reasons that I decided to go back to Resharper.
When I decided to try coding without Resharper, I was fairly confident I would be fine. I thought it would just be a case of learning some Visual Studio keyboard shortcuts. But in terms of helping programmers to produce good quality code more quickly, Resharper is streets ahead of VS2013. Its dynamic code analysis is almost like pair programming with an observant and capable partner, who will tell you how to keep your code clean and tidy as you write it, and step in to perform uninteresting and repeatable tasks such as removing dead code and generating methods. I wouldn’t say Resharper is cheap, but there is just no cheaper alternative. CodeRush by DevExpress is apparently a good product but it also isn’t cheap. I believe we do our best work and gain the most satisfaction when we can enter a state of flow when coding. Our brains work a lot quicker than our hands, and we need to be able to express an idea as quickly as possible, to allow us to move on to our next idea. To anyone who spends a lot of time coding in Visual Studio without Resharper, I would urge you to download the free trial and give it a try. If you can get used to it in 30 days, you will probably never go back.