- Error checking - Like live spell check for code. Absolutely essential.
- Code navigation -
Ctrl+click on a function, variable, type to go to the definition. (IntelliJ is very good at this in all of the above languages)
- Code completion - I use
Ctrl+space constantly to help fill in the class or method name that I need. This speeds up coding a ton, and even helps catch bugs before they happen when something you needed is not accessible from the context you are in. IntelliJ will even help you expand acronyms - type NPE, hit
Ctrl+space, and it will show "NullPointerException", "NoPageError", etc. Hitting
Alt+enter to automatically add the
import is really nice too.
- Code generation - Generate getters and setters, implement methods from an interface with a couple clicks.
- Very good code coloring - IntelliJ not only does the standard keyword, string, variable name coloring, but also colors member variables, local variables, parameters. In ActionScript a variable that is actually a setter/getter will be colored like a function.
- Refactoring - Mistake-free renaming is the biggest. IntelliJ is very good at renaming even setters and getters or string usages. Of course there is regex-based search and replace when you need it, and a "preserve case" option to enable you to replace "myNumber", "MyNumber" and "MYNUMBER" with "myString", "MyString" and "MYSTRING" in one operation
- Version control integration - We use SVN, and my favorite IDE VC features are being able to create, delete, move classes without thinking about SVN, easily browsing history, a very good diff tool, good merging capability, and annotating files (showing line-by-line history) in the editor.
- Dependency importing - When relying on a third party library that you have the source for, you can navigate to the code easily for reference, debugging, etc.
- Smart typing - pasting code and having it automatically paste to the right tab position, auto completion of end-brackets, parentheses, quotes, etc.
- A very good Test runner for JUnit, FlexUnit, PHPUnit
- Debugging - of course. Debugs JBoss, Jetty, even Flash flawlessly. Ctrl+click stack traces to go right to the code.
Things like the code coloring you might take for granted, but good code coloring is like peripheral vision - it allows you to focus on the important stuff without taking that split-second extra to identify the full word.
IntelliJ also even uses
Ctrl+space to suggest variable names. In Java, if you declare a new EventMessageItem variable and hit
Ctrl+space, it will suggest "eventMessageItem", "eventMessage", "item", etc.
All of these things give me way more time to think about my code and architecture, and think less about fixing formatting, dealing with the file system, fixing copy-and-paste errors, switching between applications, chasing down documentation, etc. etc. I don't know how you can say no to that kind of productivity increase.