blog

Staying productive with CodeFactor    Jul 06, 2005 22:45

CodeFactor is my new favorite Delphi tool. I like it because it provides the core elements I need to write Delphi code. It's fast, simple and not bloated. It provides Code Insight, Code Completion and Refactoring capabilities. The author James Jacobson (not to be confused with John or Jake or Captain or Admiral) is extremely responsive and helpful. He continually adds features and fixes bugs in a timely fashion.

One of the things that has always bothered me about Delphi is that it seems that as I add components the hourglass virus gets worse. When I have a few large libraries like DevEx's Quantum Grid, RemObject's RO/DA, IntraWeb and NexusDB...it starts to become unbearable. I've found Delphi 2005 to be a bit better in this regard, but a lot worse in other areas.

Certainly I could upgrade my machine, but that's really a hedge; CodeFactor solves the hourglass virus issue for me. CodeFactor is a completely separate exe; it doesn't attempt to embed itself (completely) into Delphi like MMX, Castalia and CodeRush. I find this to be one of its greatest strengths as it's the reason why the hourglass virus doesn't affect CodeFactor. CodeFactor does include an IDE extension that lets you go directly to CodeFactor from Delphi by pressing CTRL-F6. You can go back to Delphi from CodeFactor in the same way.

CodeFactor has some really nice features. One of the ones I really like is the "Class View" tree which is very similar to Delphi's Code Explorer. The reason I really like CodeFactor's "Class View" is because it maintains its node open/closed state after switching between units. Delphi's is ok if you want to browse a single unit and learn it, but it is useless for day to day use because it loses your context. CodeFactor's on the other hand, is extremely useful and even saves state on subsequent executions of CodeFactor.

Some other features that I like are: persistent bookmarks and ctrl-click navigation that is fast and actually works. I know, CodeRush has had persistent bookmarks for years, but this blog isn't about CodeRush or any other expert/tool. ;) Contrary to some other development tools, CodeFactor has been really solid.

One feature that is interesting that I haven't explored in any depth is its UML diagramming. CodeFactor constructs visual UML representations of your code which could be useful for documentation or learning.

CodeFactor doesn't include a visual form designer, so what I've been doing is designing my UI in Delphi and writing most of my code in CodeFactor. This seems to work pretty well. Over time, I suspect that this might further encourage me to create even cleaner separation between UI and code.

The other limitation of CodeFactor is that it requires source code to provide its CodeInsight capabilities. In most cases, this isn't a problem since source code typically ships with third party components. However some third party products, like IntraWeb, do not distribute source code for most of their framework. There is however a way to extract "int" files from dcu's (at least <= D7 dcu's) from using a modified version of Dcu32Int that CodeFactor sent to me. It's a command line app and is pretty straightforward to use.

I ran it on my IntraWeb dcu's and was able to get about 90% there. There are some minor things (intial const values, etc.) that it appears to get confused on, but with a little tweaking CodeFactor reads these generated files well and provides CodeInsight from them.

It is clear to me that CodeFactor is a feature rich code editor, targetted to those developers that like to write code and write it quickly. This happens to fit me quite well. The bottom line is: if you like to churn out code or are tired of the hourglass virus breaking your train of thought, you owe it to yourself to try CodeFactor. CodeFactor has a 30 day trial period with no limitations and it only costs $59 USD. I highly recommend CodeFactor, it's the best 60 bucks I've spent in a long time.

Write a comment

  • Required fields are marked with *.

If you have trouble reading the code, click on the code itself to generate a new random code.
Security Code: