Sometimes Less is More
Friday, March 30th, 2012I’ve made no secret that I loved CodeRush for Delphi. I still mourn the loss of Mark Miller from the Delphi community. CodeRush was, by no means perfect. Some of the issues I had with it may have been due to Delphi bugs, undocumented APIs, or bugs in CodeRush itself. All I know is that I was much more productive with it, than with the standard IDE, and unfortunately, that still holds true today. CodeRush, circa 1997 has great code navigation and smart templating. Compare that to XE2 today:
If you create an FMX application and in the main form, type in pr and hit Ctrl+J to use the template this is what you get:
procedure MyProcedure(); begin end;
What is in Italics is selected so you can replace it. This leaves a little to be desired. For one thing, pressing Ctrl+C to invoke code completion won’t even do anything, so the code won’t compile because there isn’t a preceding method prototype. Add the fact that the entire unit is a form and the method generated by the template is not even for the form class, and it’s almost comical. The template appears to be completely ignorant of the context in which it was expanded, and you might expect a modern IDE to ask for the scope of the new method, and automatically insert the declaration into the type or implementation section using the appropriate scope. This kind of functionality actually makes you wonder if anyone at EMB is dogfooding the product.
Then there is code navigation. You can use the Ctrl + Up/Dn Arrows to jump between method declaration and implementation. Sometimes it gets a little confused if you use overloaded methods, but this works pretty well, but how do you jump to the implementation or interface section? The standard IDE doesn’t provide such functionality, and this is a common activity when creating or changing method prototypes. So common, in fact, both CnPack and GExperts have provided this functionality in additional to method searching. As someone new to the IDE, you likely wouldn’t know you have to install third party products for such basic functionality, and when looking at the purchase price of XE2 it seems you get a whole lot less, even though these third party add-ins are free. The downside to these tools is that they also use their own code parsers, so many of them have a limited understanding of new language features, and require even more code to continuously run in the editor to provide the additional capabilities. I really wish EMB would provide a CodeDOM for the development of such add-ins and incorporate some of this functionality into the standard IDE.
The examples I’ve given are only the tip of the iceberg. I have QCed a number of these issues, including bugs in code completion that result in AVs at run-time because it inserts invalid code. Since then, XE2 has shipped, and 4 updates have been issued, but the bugs I reported in QC still remain.
Software is one product in which quality matters more than most. It affects the day to day experience of the user. While quality has definitely improved in the Galileo IDE since CodeGear was spun off, and has continued under EMB, IMHO there is still much to be done. I often wonder what the state of the IDE would be, if the D7 IDE had not been replaced with the Galileo IDE, and instead all that effort for the new IDE and to add new features like UML modelling which few people use, had been put into making the existing IDE even more RAD. When the stock IDE has the same basic functionality it had 15 years ago when it was branded as RAD (where R stands for Rapid), can you still call it RAD 15 years later in computing time?
Personally, I would have rather have better IDE navigation, templating, and refactoring productivity features than half baked features like ErrorInsight, which gives so many false positives, I normally just ignore it. I certainly hope that EMB considers an a la Carte pricing model at some point, and concentrates of fixing issues with the IDE as well as fleshing out FMX for the next release. For now, I’ve passed on the XE2 update offer for my personal use until some of my QC issues are fixed. Perhaps QC votes should be changed into dollars, so you can vote with your pocket book
If it comes down to a question of doing it well, or not doing it at all, sometimes less is more.