Geeks With Blogs
Kyle Burns

If you're like a lot of people I've known, worked with, and been, you have a history of either installing Visual Studio (or getting a computer from IT with Visual Studio already installed), selecting a preset option from the "what kind of development work do you do?" menu, and coding away.  I spent years occasionally hearing words like "CodeRush" and "Resharper" without really knowing what these things were or giving a second thought to how a productivity tool like them could help my work.  A couple years ago I happened to win both a CodeRush and Resharper license in drawings at the same conference.  JetBrains sent me a license activation key the same day and DevExpress took a couple months to send theirs, so by the time I received the CodeRush key I was already used to Resharper and didn't spend much time with the DevExpress tool.  I mention that not to disparage the folks at DevExpress in any way because it's cool that they participate in developer community events and give away licenses at all, but to establish the reason that my discussion of productivity addins centers mostly around the way that Resharper helps me.  There are several great productivity addins available right now and I think it is much more important that a developer uses one of them than it is which one the developer chooses.

One of the features that developer productivity addins are known well for is the active analysis of code to detect not only syntax errors, but goes beyond red squiggles and shows deviation from accepted coding practices, language constructs that could introduce runtime or logical errors in your application, and opportunities to use alternative language features.  In the case of Resharper, this is accomplished by using a color-coded "Marker Bar" which gives a visual indication of the location and category of detected code issues as well as a menu option that allows you to retrieve a full listing of all the issues detected in the project/solution.  This feature works best in a team setting when all of the developers are committed to keeping their code as "green" as possible.  While automated analysis of the code cannot guarantee that the code is doing the right things and suitable for a business purpose, it does allow code review sessions to be focused on answering these questions because the more mechanical concerns have already been addressed.

Another feature that I find valuable in a coding assistance tool is coding assistance.  In the case of Resharper, this comes in the form of extending upon the built-in Intellisense feature with additional code completion techniques, stubbing out language constructs that have required elements (such as for loops), and converting looping constructs into their LINQ equivalent.  These features in Resharper have become an integral part of my development workflow to the point where I find myself forgetting that they are added by an addin and I expect them to be on every Visual Studio installation I use - which can be a bit disorienting when I use a computer that doesn't have Resharper installed.  It also helped immensely while I was learning LINQ because the tool would suggest converting my loops to LINQ and I could examine the result of the conversation in a context that was very pertinent to me and the work I was doing.

The other feature of Resharper that I use quite a bit and is present in other addins is refactoring.  This goes beyond the built-in refactorings offered by Visual Studio and can take a lot of the work out of keeping code organized.  For one usage example, consider an organization that is committed to programming to interfaces, so there is always at least a small amount of duplication in that method signatures must be defined both in the interface and in the concrete class implementing the interface.  The benefits of interface-based development often outweighs this duplication, but it is still an annoyance in the workflow and Resharper helps me reduce the overhead through the "Pull Members Up" refactoring.  When doing green field development I can create an empty interface, develop the class implementing the interface (still empty) to satisfy its responsibility and then use the "Pull Members Up" refactoring to have Resharper do the repetitive work for me.  This is just one example of the many time-saving refactorings available.

In this post I have tried to stress the benefits that a productivity addin can bring to a developer's workflow without being too much of a cheerleader for the one I happen to use.  If you're not using a productivity addin today you should take one for a spin for a couple weeks.  Some of the features do need to grow on you a little, so don't just give it a few minutes.

Posted on Wednesday, March 14, 2012 11:18 AM | Back to top

Comments on this post: Every developer should consider productivity addins

No comments posted yet.
Your comment:
 (will show your gravatar)

Copyright © Kyle Burns | Powered by: