Monday, June 12, 2006

CodeRush 2.0

The next versions of CodeRush and Refactor are so amazing they have been assigned version 2.0 status
Thats right the next versions of Coderush and Refactor are just that special that they require promotion from their 1.x status to full on version 2.0. Now this deserves a little explanation. Well as yet, I'm not privy to any classified information and I'm afraid I wouldn't tell you any of it even if I was. Nothing personal it's just that I don't want to be sued :)

However, I can paraphrase and quote some of what I have heard. None of which is secret.

Coderush 2.0 will include a new 'dynamically typed' template engine. This new facility augments the existing template system alowing for dynamically typed templates.

What is a Dynamically Typed Template(DTT)? Well to answer that I really should explain the existing Statically Typed Template(STT)

One example of an STT would be 'mb'. This is a sequence of keys which creates the declaration of a method which returns a boolean when the trigger key (usually the spacebar) is pressed.

Why is this Static Typed? Well it always produces the exact same code and the type involved is always a boolean.

We can make copies of this template which instead create Methods returning strings, shorts or any other types you might have created.

However at 1 template, per type, per purpose we would have to write a lot of templates to cover ourselves.

Coderush verion 1.x ships with over 900 such templates, but as you can imagine several of these are essentially duplicates of each other due to the nessecity of covering serveral types for each purpose.

In Coderush 2.0, DTTs are kinda like mixing STTs and Generics.

So one would create an 'm' template which understood that a second 'chord' would be needed to indicate the type.
This allows us to write 1 template per purpose and drastically reduce the number of templates needed to achieve any given purpose.

so now I can type
mb for methods returning booleans
ms for methods returning Strings
mw for methods returning Widgets

Hang on ... did I get that right?...

Yes I did. you can now teach coderush new types that you like to use frequently and indicate which key or keys you would like to use to represent the type in question.

And as soon as you define the relationship between w and widget, you can use it with any of the existing DTT instead of having to define the relationship for each template.

This seems to blow the door wide open on template creation. It seems that I can create scores of mnemonic expansion possibilities simply by creating a single DTT

This is true. In fact, in the next version, the number templates is said to have shrunk overall by about 100 while the number of shipping mnemonic combinations should be higher by 1.5 orders of magnitude. I say this in this manner so as not to scare people off.

But don't worry, you won't have to memorise all of these. By their very nature most mnemonics produce very similar code to each other with the subtle differences in types making up their differences.

And these differences are almost instinctive to guess anyway so there shouldn't be pages and pages of documentation to pour over.

(The key here is being able to write one template and use it with many types without the author of the template explicitly having to create a copy per type.)

Speaking of which, a new interactive training window will be available in the next version. No details on that just yet but I'm guessing something a little like studio's dynamic help feature only, (as the name implies) more interactive and of course centered on Coderush's templates.

Refactor is also set to have some improvements in the way of new Refactorings. It's now said to ship with more that twice, yes that's 2X, the number of refactorings in ReSharper 2.0.

And more... yes access to all of this wonderful technology is also still wholy available through an open managed api 'DXCore'. Which is still freely available and which I will be jumping headlong into just as soon as I can.

Finally we come to the issue of money. Yup the ugly beast has reared it's head again.

Developer Express has changed the licensing model of CodeRush/Refactor to match the rest of it's products.

In version 2.0 we move to a subscription licencing model.

But don't panic this is not as bad as it first seems. Compared with the feature set of these products, the fees involved are truely neglegible.

So at the time of authoring the original price of $249 for Coderush (which still includes RefactorPro for free) is unaltered as is the RefactorPro price of 99$.

However now this price will only get you 1 year's free upgrades before a maintenence fee is required. This fee is currently set to be $100 for CodeRush and $40 for RefactorPro.

The following has not been layed out in stone and is my interpretation.

1.> The renewal price for Coderush includes the renewal price for RefactorPro which come free with the initial purchase.
2.> If you descide not to renew, you are still entitled to continue using the products that you have bought up to that point.

Item 2 here is great news because it provides incentive for DevExpress to continue to update and improve these products forevermore in order to get you to keep paying.

This is is my opinion the best money you will ever spend as long as you are using the Microsoft line of IDEs.

I cannot express just how flexible this system is.

It is more valuable than any set of components you might use to improve your end user's experience. It further allows your programming team to begin to code almost as fast as they can think.

I cannot sing the praises of the existing system highly enough.

Now that I'm thinking about version 2.0, I'm afraid someone is going to have to throw me a life-jacket because I appear to be drowning in my own drool.


No comments: