Hi,
As I stated yesterday, I’ll start to review my current development environment. If you have read the list of tools I review, you understand that some if not most of them are used in combination. For example: I extensively use Visual Assist together with Visual Sidekick.
Today it’s up to:
Visual Assist by Whole Tomato SoftwareVisual Assist is what I call a productivity improvement tool. It integrates seamlessly into Visual Studio and replaces or enhances some of its features. It’s focusing on enhancing the existing IntelliSense, improving code readability, helping you write code faster and last but not least refactoring your code. There are some more features such as code navigation, but there are better solutions for that (see my upcoming Visual Sidekick review).
Integration and functions
Visual Assist integrates into Visual Studio in 7 ways: the VAssist X menu, the Visual Assist X toolbar, two tool windows (Outline and View), the integrated menu when you press the right mouse button, a small VA button within the source code, the IntelliSense enhancement during typing and the down arrow in the context field of the Visual Studio code editor.
The
toolbar (see
Image 1) gives access to the most used features such as “Find reference”, “Find next” and “Find previous” by context or the cpp/h switch button.
Image 1: The toolbar
The
VAssist X menu (see
Image 2) basically has the same options but contains additional functions such as the code snippets or the refactoring (which will reappear when I’ll talk about the context menu or the IntelliSense enhancements).
The menu itself is the less used integration feature of Visual Assist. It I could decide, it would totally disappear from the menu bar because it’s just one more menu at the top. And if, as I do, you have multiple tools that integrate their own menu at the top, finding a menu that you really might need such as the debug menu or the tools menu is means that you have to re-read the menu title anytime you want to access it... They just put themselves at any place they want in the menu bar and the Visual Assist is right between the View menu and the Project menu.
Image 2: The menu
The two tool windows are almost never used by me. They have their place, if you don’t have a better alternative to them.
The first one is the
Outline window (see
Image 3). Basically it displays the outline of the current file. As you can see in the image, it groups the functions by classes (similar to the Visual Studio class view) but only for the current file. You can easily access the class functions by double clicking on them... and that’s about it. You cannot for example add a new class member or a new function to the class as you could with the Visual Studio class viewer.
What you can do is re-order your header files or your functions via drag and drop. Simply grab a function, a class member or an include and drop it anywhere you want. The code is then inserted between the element before and the element after the drop place. This comes handy if you want to group your function in a particular way. It’s a lot faster than cut and paste.
Image 3: The outline window
The
VA View window (see
Image 4) is more or less a search window. There are 2 combo boxes: one to find files in you solution, the other one to find symbols. Just type in some letters into the combo box edit field and a list with corresponding files or symbols or functions will appear in the list beneath.
Now this sounds like a cool feature. But it’s only useful if you’re searching for a function or class member and you’re not completely sure about the name. Chances are that you’re a little bit faster if you use your keyboard wisely and if you assign one or another Visual Assist function to a key. I’ll talk about this later.
Image 4: The view window
The view window contains another function: If you hover your mouse over a class name, a function name or a class member, the lower part of the view window will display the context of that element. For example, if you hover over a class member name, the class outline is shown with the class member visible (see the
image 5 where I hover over m_onExit; m_onExit is highlighted in the VA View window).
Image 5: The cursor hovering above a class member variable.
The next feature I would like to talk about is the
context menu integration (when you press the right mouse button;see
Image 6) ). In the example in
image 6, I put my cursor on load and clicked the right mouse button. As usual, the context menu opens. Visual Assist integrates into this menu through 2 new sub-menus: “Refactor (VA X)” and “Surround With (VA X)”.
Image 6: The refactoring context menu
I imagine that you know what it’s all about. While “Refactor” gives you access to the refactoring functions of Visual Assist, “Surround” enables you to easily alter your source code by adding code snippets (see
Image 7).
Image 7: The surround with source code context menu.While I extensively make use of the refactoring functions, I almost never use the surround functions. But that’s me. I know a lot of people who are keen of this feature. In fact, you can add your own code snippets to Visual Assist which then can be inserted into the source code through this menu. As you can see in the screenshot, there’s already a nice selection of snippets which, as I must state here, are dependent on the programming language you use.
The refactoring contains functions such as symbol renaming, method extraction, field encapsulation, etc. It would take too much time to explain them all, so please refer to the website (link at the bottom of the review).
If you hover with your mouse above a symbol (here a function name), a
small button containing a triangle will appear (see
Image 8).
Image 8: The cursor hovering above a class member function.
Once you press this button, a list of possible Visual Assist operations will appear(see
Image 9). These contain all functions related to the symbol. In my example, you can add a similar member to the class, change the signature, etc. If I would have hovered above the class name, I would have the option to add a member.
Image 9: Once we click on the triangle button, we see the possible Visual Assist operations. While hovering above the symbol, further information appears such as the function declaration or the variable declaration. Any comment that is just above the declaration is displayed.
It’s difficult to make good screen shots of the next features I’ll talk about. So please refer to the website to see them “in action”.
The IntelliSense enhancement is what everybody loves most. It’s one of those features you see in the beginning and you get so customized to it, that you don’t even remark it anymore because it just feels so natural. But once you have to work with a Visual Studio which is missing the enhanced IntelliSense, you’re totally lost... at least, that’s my case.
The enhanced IntelliSense has an improved suggestion list which will not only display the possible symbols (variables, defines, enumerations and functions) but also those that fit closest to the current situation. For example, you have used within the function you’re currently developing calls to other functions which needs specific variables from your context. The second or third time you call that function, it will suggest the symbols you have previously used to make that function call. If you have passed 2 times the variable “a” to that function, the third time you call that function, the variable “a” will be the top suggestion.
And this feature can become really scary... Once I had to hard-code (bad bad) a table of 256 values. These 256 values were based upon 8 or 9 different enum-values. When I started the table coding, the suggestions seemed to be quite random. But the more values I coded into the table, the more precise was the suggestion. And this up to a point that I had the feeling that VA actually knew in which order I had to encode them because I almost never selected another one than the suggested one after I had entered the first 50 values.
Other features that you don’t see anymore is the automatic parenthesis and braces setting. Whenever you put a “(“, a ”)” is put, too. If you put a “{“, a “}” is put also.
Another cool feature is the “.” to “->” option. Dependent on the source code and the variable declaration, Visual Assist recognizes if a “.” or a “->” is needed and adjusts the source code while you’re typing. I almost never type anything else than “.”.
Acronyms and shorthand typing is another very cool feature. Just type in a few letters, select the right symbol, function or code from the appearing list box and you’re done. In most cases you only need to type 4-5 letters to enter a function name consisting of 10, 15 or 20 letters.
One of the last features I would like to mention is the improved method list in the context field on top of your source code window. If you click on the down arrow, all classes and methods of the current file are listed and you simply select one to instantly jump to its position.
On the very right is the “go to” button. Simply put your mouse cursor on a function name or a variable, click onto the “go to” button and it will either directly go to the implementation or the declaration, or it will display a list with suggestions of files in which the function or the variable has been declared. It’s not necessary to activate the browse information within Visual Studio to use this feature.
This is all for the feature tour...
To improve your workflowOne of the features I use most is the “go to” functionality. While it’s ok to press the “go to” button on the top right of the source code window, I’m more comfortable with simple key strokes. So, if I can give you an advice, then make you life easier and assign the most often used functions to key codes. The “go to” feature for example is set to F3 on my key board. I go to a function, a variable or any other symbol and press F3 to go to its definition. If my cursor is on a function call, I get the choice between the header file in which the function has been declared or the source file where it has been implemented.
To assign your keys to functions, go to “Tools”->”Options”->”Keyboard”, find the “VAssistX.GotoImplementation” command in the command list and assign it to whatever key you want. If you enter “VAssist” in the command line, you’ll get all the Visual Assist commands you might want to assign to a key. The most useful are “GotoImplementation”, “FindReferences”, “FindNextByContext” and “FindPreviousByContext”. Another one, which is not part of Visual Assist, is “Edit.GotoBrace” to quickly jump between enclosing braces.
OptionsA lot of features can be adjusted to your needs. If you want to change the syntax coloring, you can do it either through the quick config (which lets you switch between max, default and min) or the advanced font and color settings.
The list box content and the suggestions can be adjusted and the code snippets can be edited.
You can even adjust the number of spaces between the method name and the braces.
Pricing Visual Assist is no free tool. In fact I discovered that it got more expensive since I initially bought it. And to top it all, they have changed their licensing model. Before you paid $149 for your license and you had full year of software updates and technical support.
So since mid 2008 (?) you have the choice between paying
$249 including 1 year of support and updates and qualifying for maintenance renewal (which costs $49 per year),
Or
$99 for a personal license which is not renewable and only includes 6 months of updates and technical support.
ConclusionVisual Assist is a great tool containing a lot of features which help you to work more efficiently and more precise.
The suggestion list of the enhanced IntelliSense helps you to quickly find and enter any symbol you might need. Once you have started using it, you don’t want to miss it. The “go to” function is a precious help which you never want to miss again.
The refactoring functions help you a lot when you have to extract parts of your code to put them into functions or if you want to rename them. Even changing the function signature is possible.
The tool windows as the outline window might be handy if you shuffle your functions around to create a clearer structure of you source files.
All in all Visual Assist integrates greatly into Visual Studio.
Nevertheless I’m missing quite some stuff in Visual Assist: I would like to have better control when changing function signatures or when I move want to create functions; I would like to see improved controls to create getters and setters for member variables; And a lot more... If you have ever worked with Eclipse you might understand what I mean. The amount of possible refactoring functions is incredible. The Visual Assist developers might want to take a look at Eclipse because a lot of developers have suggested them to do so...
Pros:- Great feature list
- Seamless integration into Visual Studio
- Options let you configure almost everything
- Create your own code snippets
- Improved IntelliSense
- Great “go to” functionality
- Great community through their forums
- Great support
- Multiple updates per year containing new features and bug-fixes
Cons:- Could use more and better refactoring functions
- Although requested bugs and features get “case” ids, users (registered or not) cannot see the “cases”, so bugs or features are discussed multiple times.
- The outline and view windows are almost useless. They are no real improvement compared to the already available class viewer.
- The changed license model which is more expensive than before and could hinder small developers to purchase it.
Links:
http://www.wholetomato.com/Labels: Review, Visual Assist