Tuesday, August 4, 2009

Coderush vs Resharper

August 04, 2009 Posted by Jason Irwin , , , 20 comments

I’m shocked to admit that my programming side projects are consuming so much of my free time that I am considering the purchase of a tool to help me develop faster and better. The company I work for has an extremely limited budget and there is no way they will be sponsoring such a tool in or outside of work (I know, I know – the ROI should easily justify the cost…) so this one will be coming directly out of my own pocket. I’ve done the reading, downloaded the demos and fallen in love with both Resharper and Coderush (NOTE: If I refer to Coderush in this post I am actually referring to the combination of Coderush and its partner in crime Refactor). There are a lot of opinions in the blogosphere as to which tools is better. My goal of this post is to define a set of metrics that measure application features and concerns that are important to me, a measure of weight for each value and a final calculation to determine which tool I will in fact purchase.

There are some acknowledgements that I would like to make up front:

1. I am in no way linked with either organization or any organization in this space. I have no bias.

2. I have been working with the demos of these tools for the last 2-3 weeks. This short duration coupled with splitting my attention between the two tools means that I am an expert on neither. I am sure that some of the comments I make can be corrected by those who know more on the subject than I do and I would be grateful of anyone who can provide constructive criticism. I will edit my post (and let you know when I do) and scores based on any feedback I receive.

3. Most of the projects I am working on are in the genesis or near-deployment phases. While the latter is a good time to get into refactoring, I am not currently working on the meat of a project where code templates and other such niceties are at their most useful. To test these features I am contriving some somewhat artificial test apps. The only thing I believe that I am really missing out on here is an accurate sense of how much time I would be saving in a production scenario. However, it should still be feasible to compare the abilities of both tools.

4. The ratings I make are based on the factors that are important to me. I say this not to mute criticism (again, the constructive variety is appreciated) but to admit that there is a personal aspect to this comparison and I do not wish to bash any product or turn perspective purchasers away from either company. If different factors matter to you, then use them. if I am missing a crucial feature that ANYONE should use, then let me know.

5. I believe that either of these products will substantially improve productivity over Visual Studio on its own. If they were free applications I can guarantee I’d have both running side by side and use the best features of each as if they were a single application. However, my disposable income can only stretch so far and so I will be forced to choose between two great tools.

6. To those in similar positions who need to foot the bill themselves: estimate what your personal time is worth to you. Put a dollar value on it. This is not the same as what you would charge as a consultant – it is more to do with what you feel your spare time is worth. I came up with an EXTREMELY conservative estimate of $20 per hour. If either tools saves me 12 hours of work in a year then my ROI is in the green and I am enjoying time that I used to spend working. Give it a shot – it’ll change the way you think about purchasing this S/W yourself.



    Resharper Coderush and Refactor Pro
Criteria Weight (10) Score Comment Score Comment
(Personal License)
10 3 $199 2 $249
6 3 Approximately $119 per personal license major upgrade. I.e. upgrading from the full version 3.x to full version 4.5 would cost $119. 3 $99 per year
Coupons 3 2 Resharper has a referral program and if you know someone (search the blogosphere) with a copy you might be able to get a 10% discount. Not a fortune but $20 is worth saving. Also, the products are now $179 vs $249 which makes resharper quite a bit more cost effective. 0 No coupons or discounts as far as I can tell. There used to be one - but it looks like it expired at the end of 2007. Please feel free to prove me wrong!
Trial Length 2 4 30-60 days (60 if you know someone in the referral program - see coupons section) 4 30 days. Pretty much the standard out there. No complaints here.
Performance 9 4 Performance was surprisingly good on my laptop - and nothing performs all that well on my laptop. I expected the on-the-fly error detection to choke visual studio but to date it has been pretty good. Every now and again Visual Studio crashes but I can't necessarily blame that on Resharper. It is definitely slow when it analyzes my solution (i.e. solution-wide error checking is on) but not unusable by any means. 4 So far things have been pretty fast on my desktop but is at times sluggish on my laptop. Specifically, the code analysis hints in the scrollbar tend to take a while to pull up. Similarly to Resharper, I expected this one to kill my laptop altogether which it has not. huzzar!
(for new versions)
7 3 In the past resharper has taken some time to release new versions that support the latest and greatest Visual Studio. With 2010 around the corner this is a key metric. Hopefully they'll be quick with this one. 5 Coderush wins here. In the past they have supported newer versions of Visual Studio right off the bat and this seems to be something that they care about - and it is definitely something that I care about.
8 3.5 There are some good docs and demos up there - just not as many as with Coderush 4.5 I've got to give it to Coderush here - there are tons of high quality videos on the devexpress site. Would have gottent a 5 but it is hard to tell sometimes if the videos are out of date or if they are relevant to newer versions of the application.
6 3.5 Not ugly by any means but it doesn’t really have the eye candy that Coderush does. It wouldn’t stop me buying the tool, but as my father always says it's better to say "there you are" than "where are you" 5 It matters, Coderush is gorgeous and that's a scientific fact! I believe in the need for visual cues and Coderush has boat loads of them. 
Speed, 10 3 One of my gripes with Resharper is the constant need to switch between keyboard and mouse. If I want to convert a local variable to a constant I have to use the shortcut to convert it to a field and then follow the dialog that pops up. I HATE dialogs. Not only do i hate dialogs but I hate keyboard shortcuts that I need to write down to reference. Resharper does a LOT and it does it really well - but in terms of input efficiency it has a lot to learn from coderush. 4 I found with Coderush that everything (almost) I did, I did it from the keyboard. The keyboard shortcuts were intuitive and after a couple of days I had the basics down without even trying. The smart ALT-` key combination covered a ton of ground and all-in-all I felt a productivity increase very early in the game. I look forward to playing with it some more to see if I am really getting faster or if my computer is getting slower :o)
Features 10        
Test Inte-gration
6 3 Supports NUnit and MSTest right out of the box allowing tests to be run from straight from the code or solution explorer. Lovely feature! Additional frameworks are available as plugins…which is nice! I'd love to see either product attempt to rival testdriven.net and add some more advanced features to the mix. Not their domain perhaps, but certainly a big efficiency booster. 0 It is on the coderush roadmap, but what it will consist of is anyone's guess. It wouldn’t have been a dealbreaker if Resharper didn’t have it. But they do. So it is!
On-the-fly Error Detection 6 5 This is pretty massive and works quite well  0 Nada! Resharper cleans up on this one. Plain and simple.
Code Templates 8 5 Both tools offer great support for templates and I really had no complaints. Declaring my own in Resharper was a breeze but actually utilizing them with keyboard shortcuts was a joy in coderush. This one is pretty even methinks! 5 <--- What he said
Code Template Sharing 4 5 Allows templates to be shared by multiple users. 0 Not a dealbreaker but coderush does not proffer a straightforward method to share templates between users. Shocking, but as an individual user I wont lose any sleep over it!
Navigation 8 5 Both tools offer great  support for navigating to declarations, implementations, and so on and so forth. These improved my speed around the code 100% and I love this feature of both tools. More than anything, the ability in both apps to hold CTRL in order to unveil navigation links to class/method/etc. implementations is just astounding. Simple, but astounding. 5 <--- What he said
Code Assistance 9 3.5 The coding assistance ranged somewhere between horrible and life-changing, depending on the time of day. For instance, Reshaper gives suggestions to remove redundant variables, redundant method calls, etc. But to my horror I noticed in a .NET 2.0 C# application 3.0 constructs were suggested. For example, I was advised to convert a method call followed by property intializations to an object initializer. Needless to say this broke my build! This is something that renders useless the assistance the tool provides - perhaps it is a bug specific to my version or project, but I don't want pay to second guess the code assistance.  4 Code assistance in Coderush was excellent and I really have no complaints. A fantastic feature is the visual feedback provided on the scrollbar which allows you not only to view where there are issues in your code, but also fix them without necessarily needing to navigate to them. Brilliant! 
8 0 Resharper currently does not implement code metrics but "most likely will introduce suggestion system sooner or later" (reshaper.blogspot.com).  5 Don't get me wrong - I understand cyclometric complexity and appreciate the benefit of a quantitive measure for code complexity…I just don't do it by hand. To see a tool that not only does it for me, but inlines it in my code as low as the method level...well that is awesome! Also awesome are the various supported metrics as well as the ability to define one's own. Didn't know I needed it, now can't live without it!
Code Generation 9 5 I really like some of Resharper's in-built code generation mechanisms. Creating a method from usage can be a real time saver, as can generating properties/constructors/equality members, etc. Actually, this is the one time I will not complain about Resharper's (over)use of dialogs. The GUI menus provided for code generation give you complete control over the code you are generating and I LOVE this area of Resharper. 5 This is another area in which both Coderush and Resharper have invested heavily. Similar to Resharper's 'create from usage' mechanism, coderush offers intelligent class/member declaration. 
Code Formatting 9 5 supports NUnit and MSTest. Allows tests to be run from the code or solution explorer. Lovely feature! Additional frameworks are available as plugins…which is nice! 3.5 Not built into the application but available through a plugin called CR_Classcleaner. It is great to have a community building such plugins and great that this functionality is available. However, I'd love this to become part of the core so that a) I don't need to reinstall it every time the dxcore is updated and b) I have the comfort of knowing that it is a key concern of the devexpress team - it is that important of a feature to me.
Keyboard Shortcuts 8 3 Resharper offers keyboard shortcuts to do many of the same things as Coderush. However, they took a LOT of learning and often times I found myself having to interact with the mouse after I had used a shortcut - therefore defeating the purpose a little. not terrible, but not great either! 5 Coderush wins hands down here. The key combinations are logical and intuitive and within no time the more common functions had become almost mechanical.
TODO lists 1 3 It's there but it's ugly. And honestly, it really doesn’t do much that the in-built functionality can't do…It is a bit of a lacklustre implementation and, I'm guessing, a feature for the sake of a feature. 0 Not there, but I don't care all that much. If either product adds a must-have feature in this space I'll start to care pretty quickly…
Extensibility 5 4 Resharper has an open API and includes powertools for Visual Studio. There are a bunch of plugins for everything from Nhibernate to StyleCop. It is difficult to compare 1:1 with Coderush as I have not developed a plugin for either (if I had time I wouldnt need either of these tools :o) ) but I'm definitely happy that both have the option. 4 I thought Devexpress would really shine here. They build their applications on top of dxcore and provide devs with the resources necessary to create their own plugins. There are a number of plugins out three (Google is your friend) but not as many as I would have thought. But to their credit they provide the tools needed so i cant complain. 
C#   Y   Y  
VB.NET   Y   Y  
ASP.NET   Y   Y  
XML   Y   Y  
XAML   Y   Y  
C++   N   Y  
HTML   N   Y  
Javascript   N   Y  

RESULTS Unbelievably, after my first round of comparison, there is a single point separating two applications!! These scores were not contrived and it was not by goal to be controversial. The closeness of scores proves a predicament as I am really no closer to choosing between the tools as I was when I started my testing 2 or 3 weeks ago. It looks like I will have to do some more testing before parting with my hard earned cash! Any advice would be much appreciated!


Hey folks,

Thank you for your excellent feedback regarding resharper vs. coderush. I am currently unable to reply inline to comments (blogger recently introduced support for this so i have to update my theme...) so i'm going to do one small post that will hopefully cover some of the points hit on in your comments.

1. Full disclosure: Last night I attended the monthly Chicago Alt.Net user group meeting and won a copy of resharper! I'm really pumped about it. If nothing else I will be able to dig really deep into resharper and hopefully optimize my development in the long run. That said, because I am EXTREMELY interested in these tools and what they can do (and I believe healthy competition leads to cross-pollination that benefits us all) I still plan a second post in this series. I will remain completely unbiased. Expect a follow up in the next few weeks….

Because I’m on the subject I’d like to point out that the Chicago Alt.NET meetings are awesome and full of informative information. If you’re in the area stop by – you’ll always learn something new from these (http://www.chicagoalt.net/Home)

2. To those who commented on "on the fly error detection" in Coderush - you are completely correct. The version I was using for my comparison was an older one than that which is available now. My redux post will take this into consideration.

3. I don’t know much about support for F# though read that 4.5 has improved support for F# therefore would expect some support for F#. very informative, I know…

4. I am pretty pumped to hear about access to daily build of R# but even more pumped that there is a beta plugin for VS2010.

5. I DEFINITELY should have talked more about Coderush Xpress – I just ran out of time and space. I will incorporate this more in my next post. With the number of plugins available this is certainly a handy tool for anyone in a similar position to myself whose employer can or will not purchase such software of its devs.

6. I was 100% WRONG about exporting templates in Coderush. I apologize for the misinformation. I spoke to a member of the coderush team who told me that:

“we actually do support template sharing through version control, email (you can export and import template folders and share those with colleagues), and through a shared settings folder on a network.”

7. Apparently I didn’t go into refactoring in enough depth – I hear your suggestions and will incorporate your feedback in my next post.

8. I have not yet used CTRL-SHIFT-R as a single refactoring key pattern in resharper but it appears this will address one of my concerns with having to remember a ton of keystrokes. I still love Coderush’s shortcuts thought!

9. It looks like I need to investigate a bunch of DXCore plugins before my redux. I won’t address each comment I received but suffice it to say it is an area that deserves more attention.

There is a ton of other stuff I’m probably not hitting but my lunchtime just ended and I have to get back to work :o)

Thanks again for your feedback,