So was I wrong? There were three options:
- Sublime Text has actually become a fully fledged IDE
- The speakers aren't using the best tool available.
I decided to find out which of the three was true, and the result I present to you in this blog.
The criteriaHere is the list of criteria I tested:
1. Intellisense / auto-completeIs the editor capable of providing typing hints both on framework and self-coded functions? Will it provide parameter info on all functions? Even on functions in other files? This is an important feature both because it helps on typing speed, but more importantly it reminds you what the signature of any function is. It will save you a lot of Googling (framework functions) and solution2 navigation (own functions). This is a major time-saver when properly implemented.
2. Solution navigation
Go to definition: When the signature of the function is not enough and you want to view (or edit) the contents of the function, a quick way to navigate to the function call you're looking at is useful. This should be a one-keystroke shortcut from anywhere in the solution. This also goes for variables, as it for instance can be useful to see the initialization code of the variable.
Find usages: (Aka "Find references") Could be used to navigate to a concrete usage which you don't remember exactly where was, or it could be used to determine what the impact of a change of this function will have. Not in terms of renaming the function, because refactoring should take care of that, but for changing behavior.
Navigate to file: When the cursor is on the "href" or "src" part of a script- or stylesheet-tag, you should be able to navigate to that file with a single key press.
3. Refactor: Rename
Of all the refactoring functions, this is the one I use most often. This is the only one I'm truly dependent on. I utilize and appreciate others, but if the IDE doesn't have support for solution-wide renaming, you're in trouble. Most likely you'll often end up with sticking with original names of all functions and variables as the program evolves, because of the hassle of changing names. But behavior and meaning of functions change. So should names. There's nothing I hate more than finding a code base with the function getDollarValue only to find it accepts a parameter for an arbitrary currency.
4. Code outline viewI find it useful to have a quick overview of a file or class in a window pane next to the code itself. It quickly gives you an indication of the size of the file, it's role and concerns. It helps you keep the architecture clean and the code tight, in addition to be a navigational aid.
5. Syntax error highlightingIn a parsed language this is even more important than in a compiled one. Why should I have to waste time running the application and checking the console view only to find out I forgot a semicolon?
Debugging (not included)Some of the IDEs have debugging capabilities. I haven't considered this feature essential because all the majors browsers have this now so you might as well use the browser for debugging. For those who have it though (All but Sublime), it might be better to use the IDE-debugger for convenience.
Visual Studio 2013
Visual Studio 2013 + #ResharperIf you purchase Jetbrains' Resharper-plugin for Visual Studio, you're getting all the coding support you need and more. It's going to cost you though - not only the license cost of Resharper (~$150 for a personal license), but you're not getting away with the Express edition of Visual Studio anymore either.
Sublime Text 3 + SublimeCodeIntel (ST3+SCI)
Cloud9 is stands out in the crowd as the only web-based IDE. I saw it mentioned in a closed question on Stack Overflow addressing the same question as I do in this blog post. I must admit I was highly skeptical to a web-based IDE and didn't have very high expectations going in. But I was surprised and impressed how far they have come. They have It still doesn't quite make it to elite league of IDEs, but I'll be following the development of this and similar services keenly in the years to come.
vim (not included)
Vim is not included in this test. Many developers use Vim sort of as an IDE (comparable to Sublime Text 3) and would probably like me to include it. I didn't do that primarily because I don't have the time to get to know Vim and its plugins well enough to be able to answer all the questions. From what I've read, you should be able to get some Code hints (intellisense) and also a Tag list which acts like a Code outline view. Refactoring support is absent as far as I can tell.
The result matrix
So here are the results, after hours of installing, configuring and testing code in the different IDE's:
|a) DOM functions||Y||Y||Y||Y||Y||Y||Y||N|
|b) Own functions/variables||*||Y||Y||Y||*||Y||*||*|
|c) ...showing parameter list||Y||Y||Y||Y||Y||Y||*||N|
|d) File references (src, href)||N||Y||Y||Y||N||N||N||N|
|a) Go to declaration||*||Y||Y||Y||*||Y||*||N|
|b) Navigate to file (src, href)||N||Y||Y||Y||*||N||N||N|
|c) Find usages||N||Y||Y||N||Y||N||N||N|
|3. Refactor: Rename |
|5. Syntax error highlighting||N||Y||Y||Y||Y||N||Y||N|
Please leave a comment if you find any errors in the table.