I've developed .NET applications with both of these products in the past and they both have some great features that save a ton of time. It had been a while though since I last did a comparison, so I decided to put them up to the challenge once again. Here are my initial thoughts on the best pros and cons of each. They both have some great refactoring features, however they also each had some good differentiating features too. I've just started my revisit to these 2 products which I plan on comparing in real development over the next few weeks. But here is my initial thoughts on the 2 of them ...
Top 3 features that Resharper has over CodeRush/Refactor Pro:
- Analysis icon (shows code errors before you build) This is just awesome!!!
- Find Usages (finds all usages of a class, interface, etc.)
- Optimize "usings" (removes unnecessary using statements)
- Better templates out of the box (helps write code faster)
- Quick Find (helps find a method, property, class or whatever very quickly)
- Better visual enhancements (blocks the regions well, blocks code nicely, auto-highlights easily, shows code flow nicely with visual cues)
- Use of markers
Top 4 features that CodeRush/Refactor Pro over Resharper:
If you could combine some of the features you would have a great product! I love Resharper's analysis tools!!! If you ahven;t seen it, try it out. What they do is check your code for compile errors and even for warnings while you type. So before you even build your code you will see an indicator that shows green (all is well), orange (warnings exist), or red (something is amiss). Warnings could be something like you declared a field that you never use, which is helpful for cleaning up your code.
The Find Usages feature of Resharper is incredible, too. I recently had to work on a few major refactor jobs where I had to change about a dozen classes and every place that used them. This ended up effecting about 50 files as the application was very OO and the levels of inheritence and interface usage was deep. The Find Usages feature of Resharper made this soooooooo much easier on me. Whenever I changed a class I first looked up all usages of it so I could make sure I tested those paths as well. When I changed the signature for methods or constructors, it updated the usages for me! Very slick indeed.
These 2 features of Resharper alone are just incredible, IMO.
I do find that the templates in CodeRush to be much better out of the box. Writing code with them is so much easier than without. For eaxmple, to declare a local variable I just type "fi[space]" and it inserts a int for me. If I type "pi[space]" it inserts the template for a full Property with get and set accessors. Very slick. There are a ton of single and multi key templates that you can use. I plan on testing them all out to see how they compare to Resharper, but so far they seem a ton better in CodeRush.
OK, maybe its trivial, but I have to admit that CodeRush has some nice visual features that caught my eye right away. It makes regions look more visually disparate than with CodeRush. It does this by making the region be a highlights rectangle when closed. Does it help me code? Nah, but its a nice visual feature. But I added it in this post because it maakes me wonder why other products don't offer this (or maybe they do and I am not aware). CodeRush goes further by putting icons next to classes, properties, methods, interfaces, etc to help denote if they are private, public, internal or whatever. Again, another nice feature but it isn't likely to help me code faster. Where it is smarter is when you click on the icon of, say, a public class, it gives you a pull down list of other options besides "public". So you can change a class to "private" in this manner. The best visual feature may be how it shows control of flow, though. For example, if you have a return statement CodeRush shows a green arrow next to the return. If you click the green arrow a graphic appears that points you to where the return statement exits the routine. Similar graphical features also exist with the continue, break and exception throwing commands. These are very slick.
OK, so far I am still on board with Resharper. I think the featureset with CodeRush is more extensive that Resharper and frankly it look a lot fancier that Resharper. But I just don't think I can live without the Find Usages and Analysis features of Resharper. The template features of CodeRush are very appealing though. Maybe someone will create a tool that combines the best of both worlds from these products.
Stay tuned ... I'll post more about how my experience goes with both of them.
For me, Round 1 goes to Resharper on a 2 to 1 decision.