In all honesty, this review may be a bit premature. However, I wanted to record my thoughts and see if anyone listening shares them or has a difference of opinion.
I've been evaluating the SlickEdit Tools
and have come up with a few top picks. Also, I have identified some that make little difference to me.
First of all, the Tools are segregated into two products: Editing Toolbox and Versioning Toolbox. I'll review them separately.
- Acronyms - This one is quite nice. I've created acronyms for namespaces that I use regularly. In fact, I even wrapped the entire c# using statement in the acronym. So, something like "umbc" can translate to something like "using My.Business.Controllers;" I am now looking for patterns in my code that may benefit from Acronyms. However, as I like to refactor to reduce code duplication, I don't know if I will find too many more uses for this feature. Regardless, It does save time when starting up a new file. Another positive that Acronyms provides is the ease by which to create new ones.
- Code Annotations - I am not big on commenting code. I prefer to let the code speak for itself. If the code has trouble communicating, then I refactor it, such as renaming a method to clearly communicate the intent. However, as a code reviewer, I can see great benefits to annotating the code for that purpose. In the past, I have been in code reviews where the note taker's handwriting is suspect. Also, the notes are on a hard copy that either gets filed away somewhere or scanned in. I can see the benefit of using Code Annotations with code reviews on a projection monitor. Assuming all participants review the code ahead of time, the meeting can run very smoothly. And then you just send the annotation file to the team that owns the code.
- Quick Profiling - I don't know how many times I wish I had a profiler at hand and was out of luck. Clearly, adding a bunch of lines of code to record timestamps is not generally the best use of a developer's time. Quick Profiling basically uses a trace handler and allows you to just write to the trace and you get profiling. Of course, you are still adding lines of code to write to the trace, but it is a lot less than the other cheap alternative. A true profiler is out of my budget as I suspect is the case for many of you. I can see Quick Profiling saving me time guessing at where a bottleneck is. I'm looking forward to testing it out on my next performance related issue.
- Load Files - This one looks pretty promising too. If it weren't for the "Object reference" error I keep getting when I try to use it, it would be in the Top Picks. This gives me a good opportunity to investigate customer support.
I have used the MVC pattern quite a bit in my applications. As you can imagine, there is some segregation of code between the Model, View, and Controller (not to mention the data context). Though these components may be in different libraries and subfolders, they have similar names. Because of this, using Load Files makes it convenient to load all of the related files at once. Though I could certainly F12 a reference to open the related class, it's nice to be able to open the files in anticipation that I will need them.
Another advantage, and possibly the biggest, is that you don't have to navigate solution explorer to the correct library and subfolder to find the file you want to open.
- Auto Code Doc Viewer - As I said before, I am not big on commenting code. Perhaps if I start publishing an API, this feature might come in handy.
- C++ Code Navigation - The last time I saw C++ code was about 15 years ago.
- Code Navigation - I'm not sure what this gives me that I don't already have with my C# editor (Ctrl+- and Ctrl+Shift+-)
- Comment Wrapping - I have to admit, that when I do write comments, they are generally quite lengthy. A sure sign that I probably need to spend more time thinking about the code and refactoring. Regardless, this doesn't happen often enough for me to get much benefit out of this feature.
- Directory Aliases - I don't browse directories very often; and when I do, the directories are relatively close to each other. I don't see much of a time saver here.
- Icon Extractor - I don't work with icons (nor Windows Forms) much.
- Quick Launch - As far as I can tell, only beneficial if you also have the SlickEdit Application installed.
- Regex Evaluator - This might be great if I didn't already write my own (and if there weren't already a bunch of online tools available).
- Word Completions - The help is confusing on this one. Perhaps I am just "slow". Regardless, I use Visual Studios word completion all the time and I don't know how this can add much value.
- SVN Integration - I've been using AnkhSvn for almost a year now. There are certainly some drawbacks to Ankh. SlickEdit's integration seems to be more stable, which is why this is in my Top Picks. However, Ankh does provide a bit more (for example, automatically performing an SVN Add when you create a new file). Also, Ankh is open source (good and bad).
- Find Version - This is a promising tool. I know that I have had to dig through revisions to track down something that is causing problems. This nifty little tool might have saved me a few hours searching. On the flip side, I don't have this problem very frequently.
- Who Wrote This? - Uses the history of your source file to show you who was the last person to touch each line of code. This can come in handy. I can quickly identify who I need to confer with if I have a question about the code.
- Comparing Directories, Diff with Disk File, DIFFzilla - As I use SVN and Tortoise, I already have these types of tools. In my opinion, the Tortoise tools are top notch. I have used the diff/merge tool many times to compare two files on disk. I just don't see the added benefit with SlickEdit's tools.
- Version Graphs, Version History, Version Visualizations - These just don't seem like features I would need or use.
- Backup History, How Old Is This?, When Was This Written? - I think good Agile / XP practices should eliminate the need for these tools. For example, knowing which lines of code are more "stable" can be determined by looking at a history of failing tests.
As I said from the very beginning, this evaluation may be a bit premature. Although the purpose behind these tools is to save development time, I don't want to take too much time learning how to use a new tool that won't give me a lot of benefit. Don't get me wrong. SlickEdit Tools for Visual Studio has a lot to offer. At around $50 for each piece (Editing and Versioning), that's just a drop in the bucket when you consider the time you can save. Even if just one feature provides a performance boost, it would be worth it. I certainly plan to get my money's worth.
I'm convinced that if more people use the products that SlickEdit provides, they will only get better. It's really up to the community to tell them what we want (perhaps refactoring tools, perhaps templates). Imagine what they can gain from our experience.