So, what exactly is AxTools CodeSMART 2003 for VS.NET? AxTools describe it as "a rich set of tools and utilities, extending and enhancing the development environment". Having had the chance to try it out for several weeks now, I wouldn’t argue with that description.
There are so many features that there isn't space to list them all here. What I would say for sure is that there just has to be something in this package for everyone. Some of the features of this Visual Studio Add-In enhance existing IDE features; others are useful new additions to the Visual Studio layout and tools set.
Installing the package is a breeze. You'll find that you've suddenly gained a few additional rows of new toolbars - a bit of re-docking and re-ordering to your preference and everything is neat, orderly and available to you. In fact, if screen space is a problem, you can dispense with the toolbars completely and simply use the new CodeSMART top line menu item which will also have been added for you.
The Help file will get you started; you can make some initial tweaks to the various options and preferences available to you in the CodeSMART Control Panel and then dive into its extensive menu.
As mentioned earlier this package boasts a wealth of features. To give you an idea of the scope, there are no less than 23 separate SubSystems listed in the main menu of the User's Guide and most of these have several variations of their own. Only a small sample of those that I particularly liked are covered in this article.
Some Selected Examples:
This is a typically good example of how they have made an existing Visual Studio feature more versatile and easier to use. You can simply select an area of code in the code window with the mouse, choose 'Create Region from Selection', name your new Region and voila, it's done. To make life really easy for you, you even have an immediate choice of collapsing the new Region from within that menu. And of course you can create nested Regions in the same way if you need them.
They have also introduced a new concept along the same lines. These are Code Zones, which again you create simply by selecting any text blocks you want to identify and giving this new Zone a name. This feature overcomes the limitations of the standard Regions in the IDE and gives you total flexibility in this area.
Extended Search and Replace
Another feature I like is the Extended Search and Replace. You enter your search word or phrase, decide on the scope of the search and a complete list of all occurrences will be displayed. I like the way it gives me the option of selecting an individual occurrence from the results box - much better than the Find Next approach used in the standard IDE. You can double click on any item to jump to that code line. And of course with CodeSMART you can replace all the occurrences with just one click.
This is a very good feature. They have taken the basic Visual Studio Solution Explorer and added the useful bits of the Studio's Class View to it. By 'useful bits' I mean that it will specifically display the procedures, functions, properties and fields of all the classes, forms, user controls, etc. currently existing in your project. And although there may be times when you want every possible item listed, as you get with the standard Class View, I often found it very helpful to see only those items that were directly relevant to that particular project at that time. The Code Explorer does just that.
It offers you a choice of display options - font, sorting order, expand, collapse, etc. which allows you to set the layout and level of information that suits you.
Digging deeper into the Code Explorer options, right-clicking on any item will bring up a context menu with a range of choices relevant to that specific item. The screenshot below is a typical example. This is the menu you will be offered if you click on a form class you have created in your project (In this example, it is Form2).
Notice how most of the items in that screenshot menu offer you choices of additional tools which are brought to you by the CodeSMART package itself - Inserting Classes and Interfaces, Adding new Properties and Methods, Adding this item to the Workbench, and so on. It's a good example of the high level of tool integration that is apparent throughout the whole package.
Another useful innovation is the Workbench, which I briefly mentioned above. I've come to think of the Workbench as 'the missing link' from the standard range of Visual Studio Task Lists. When you're working on a project, there will be many times when you want to be able to jump between particular areas of code quickly and often. By selecting items in the Code Explorer to add to the current project's Workbench, this facility is immediately available to you.
Each project's Workbench is saved automatically and so the information can easily be accessed again when you re-open the project to continue with it. As you would expect, double-clicking on item will take you to it in a code window or designer window, depending on what kind of item it is.
Individual items in the Workbench list can be color coded, you can change the sort order and, of course, you can delete items from the list that you are no longer interested in.
Miscellaneous Likes and Dislikes
I don't have any real dislikes, but inevitably there are some features where on occasion you find yourself thinking. "Wouldn't it be nice if .....". Along these lines, I would like to see the Find and Replace feature enhanced so that it incorporates all of the standard Visual Studio facilities plus the extra bits that CodeSMART has added. In other words, an all-in-one package that effectively does away with the basic IDE's Find facility.
In similar vein (and I know I'm just being lazy now!) I thought that it would be handy to have a further 'Sort' choice in the already excellent Code Explorer. This being the ability to sort all the Project's files by file type. It's not every day that this would be a key issue, but occasionally nice to have when dealing with a variety of files which are not all .vb's.
I see that AxTools have issued three FixPacks with upgrades and fixes so far; I'll maybe feed the above ideas back to them and see if they appear in a future Pack. I think they might.
Just a couple more examples of the kind of small things I like about CodeSMART:
If you add a new control to a form, you will get a nice, friendly pop-up box offering you some default choices which you can accept , edit or reject. Adding a Label is a particularly good example - the great thing about labels in particular is that you are presented with a decent size text box into which you can type the label's text. One of my pet hates is the nasty little single line entry box you have in the VS IDE Properties Window for labels, so I particularly like CodeSMART for this.
Using CodeSMART's quick and easy tools for adding a new Class, Property or Method takes the drudgery out of repetitive tasks. As with most of their tools, you can select your preferred choices from a range of options in a menu and some default options are initially set for you.
By the way, it automatically adds a TODO reminder comment inside the newly created code blocks for you. As you will know, this in turn means that the new item will now be included and accessible from Visual Studio's own Comments Task List. I think that is quite a good example of how well thought out the whole package is.
As most of the above sings the praises of CodeSMART 2003 for VS.NET, you'll see that I'm very impressed with it. It's well thought out, clearly presented and easy to use. There are many clever little features and as I've often been heard to say, "It's the little things that make all the difference." If none of the items covered above excite your interest, I should point out that there are still Advanced Code Builders, AutoText, Code Formatting, Designer Tools, Exception Handling, Extended Clipboard, Spelling Checker and Workspace tools, to mention only a few that I haven't managed to cover.
Don't take my word for it. I recommend you visit the AxTools home page at www.axtools.com and download an evaluation copy. As I said at the start of the article, I think that with its wide range of integrated tools for developers at all levels, there just has to be something in it that's of use to all.