Just a little rant on VS2010 to let it all out before I pitch it through the virtual window. I’d be the first one to say I’m not a professional programmer but I have been programming for some 27 years now and have been using Microsoft’s “Visual” products back since Visual Basic v1.0 and I would like to think my complaints have at least some element of truth in them.
I made a big leap from using MSVS v6.0 right to VS2010 and the speed difference overall was huge with 2010 being the slower of the two. Even on hardware of 10 years ago VS6 was snappy and responsive but VS2010 on a high-end system today is still sluggish. Build times are 3-5 times slower, the “goto definition” editor feature is close to useless sometimes as is the “add variable” on the resource manager. For example, trying it just now on a small 50,000 line project the “add variable” dialog took 10 seconds to display as does “goto definition”. I’m not entirely sure what it is doing that takes so long: even a grep on all the source files only takes a few seconds and most of that is actually loading the file from the disk. With only a few megabytes of source code you’d think it would be all previously loaded and parsed in memory and finding something would take milliseconds. I mean, I can load, parse and display 250MB of Skyrim’s 1 million records in half the time that VS can parse and figure where/what something is in 10MB of text files, all of which are already parsed and in memory.
VS2010 is by far the most unstable of all Visual products I’ve ever used by a large margin, even VB1 way back when. In my many years of using VS6 I don’t ever actually recall it crashing once…I’m sure it did but it was rare enough to not remember specifically. Right from the installation I began getting strange “VS has become unstable” or similarly meaningless error messages telling me to uninstall any add-ins, which I didn’t have of course. I believe the SP or other patch fixed that error from occurring immediately but I still get it once a every day or so and outright crashes on a similar schedule. The main editor has regular issues becoming corrupted to a point that it can’t properly select or edit text. It looks like somehow its internal representation of the text doesn’t match what is actually there which makes editing anything next to impossible if not more entertaining. Another particularly frustrating thing which happens all the time is that the undo function randomly stops working until I restart VS which is great fun when I accidentally change something, hit Ctrl+Z and nothing happens.
User Interface Contradictions
The interface is strange mix of both good and bad, as though they either gave parts of it to an unsupervised intern to implement or merely forgot about them entirely. A good example of this is the “Add Event Handler”:
The issues are minor but numerous and so basic you wonder how it passed any review:
- This dialog takes anywhere from 5 to 30 seconds to display with a lethargic average about 10 seconds, although to be honest I’m being generous with the “5 sec” minimum.
- A 3 item “Message Type” list box. This list usually contains at least a dozen items and can potentially contain hundreds. Although this is better than the 2 item list box I found somewhere else.
- A “generous” 7 item “Class list” list box which could contain many 100s of classes. SkyEdit, for example, has the potential to exceed 1000 classes and the problem is made worse by the next item.
- Most of the time VS2010 doesn’t automatically detect the class type for a resource. I have no idea why it can’t detect that dialog IDD_MY_DIALOG is used by the CMyDialog class, VS6 had no problem doing it, but this means when adding handlers in a large project quickly becomes a tedious pattern of dozens of mouse clicks to find the needle in the small list box.
- You have to choose the class first and then the message type. If you choose a message type first and then a class it resets the message type to some default it feels is more appropriate.
- Despite the mini-sized list boxes the dialog is huge, for some unknown reason, wasting a large amount of space. If the two list boxes were lengthened to fill the dialog it wouldn’t be so bad.
- No “Add” button only “Add and Edit”. A minor thing again but when adding multiple events there is no need to edit the source immediately and another thing that VS6 had missing in VS2010.
The result of all these minor issues is that the automatic event handler creation, a feature that is supposed to reduce my workload, is actually worse that doing it manually, especially when doing dozens or hundreds of events. The only reason I use it is that I usually can’t remember what the function format for WM_SOME_RANDOM_MSG message is.
Strangely enough, although the “Class Wizard” dialog is equally as slow it doesn’t suffer from this control miniaturization or lack of any design forethought.
Lack of Standard Conformance
I was aware that VS2010 was not completely conforming to the new C++11 standard (what compiler is at the moment), but I was not completely aware just how much non-conforming VC10 is and even VC11 will be. The lack of basic features such as default move methods, range based for, and default/deleted methods and the little difference between VC10 and VC11 feature sets are almost a deal breaker. The short version is that I’ll have to wait several years for many of the C++11 features to appear in MSVC making them several more years behind other competing compilers.
Too Much of a Good Thing
The overall interface is pretty good although there are almost too many options for each component:
- Dock as Tabbed Document
- Auto Hide
Windows switch places seemingly at random with no good cause so at any time it is a guess where a particular one might be. Every time I use the Resource Editor I have to hunt for the Properties window: sometimes it is tabbed and others floating, sometimes on the right and sometimes on the left, and sometimes completely hidden. Flexibility to configure your display to your liking is great but having to guess where Window X is each time is not.
Lack of “Easy” Macros
Case of the Expanding Find Dialog
Another minor thing is that the find dialog, as useful as it is, has a problem of randomly expanding. Despite never changing its size except to make it smaller, half of the time when it is displayed it will expand to most of the width of my 2-monitor screens. In addition to being 2000 pixels wide it also has random display issues when this occurs (window border is not properly shown).
Not So Helpful
The move to a web based help system I suppose is a natural progression. I would assume, ok…hope, that there is an offline version available as I’ve already run into several cases of being offline and needing to access help. On a good point, the MSDN search is now only half-useless having improved over almost useless. It gives me the relevant article around half the time and the other half a similarly named function from the unused depths of the Windows API completely irrelevant to what I’m doing. This is again a strange case as VS2010 knows everything about the project and code: it is a Win32 project, using MFC, in a class derived from a MFC class in a virtual function from that MFC class so why would it send me to an Embedded Windows function of a completely unrelated class? It is at a point that I’ll soon be looking at how to change the help to use Google or a similar alternative.
An issue I only rarely had in VS6 but regularly have in VS2010 is corrupt builds causing subtle and impossible to find bugs (because they don’t actually exist). I thought it might be due to editing and saving a file during a build which does popup a cryptic warning message but even after not doing this the problem still persists. What appears to happen is something like: file1.h is modified which is used by file2.cpp and file3.cpp but VS only detects and recompiles file2.cpp. This leaves file2.cpp and file3.cpp with different versions of file1.h which can cause all sorts of issues. It occurs so frequently that when I encounter any “strange” bugs I immediately rebuild the project first. Fortunately all my projects are on the small side so it rarely takes more than 5 minutes but this can be a bigger headache with larger projects due to VS2010′s slow speed, like this question on SO I answered which appears to be due to this same bug.
Some, or maybe even most, of this complaints are relatively minor individually but as a whole the end result is a distinct lack of “polish” of VS2010. It really feels like some free open source program I downloaded from some amateur developers rather than something I paid over $1000 for, and that’s the “cheap” version. Really the only thing I can think of that is improved over VS6 is that auto-completion is slightly less broken…hardly a ringing endorsement of the flagship development product from the creator of the most used OS in the world.
Appendum: The VS2011 beta was recently released and the continued lack of any intelligent design in it can be summed up in the nearly black and white UI theme.