It’s now been 250 days since I started using Eclipse, first for a demo I was doing with GWT, and then for day to day programming. Yes, I’d used it a few times in the past, but I’d never stuck with it and gone back to vi/vim/gvim and ctags soon afterwards. I’ve got to say, I’m surprised. After 20 years of using vi, and having my fingers well trained for those particular commands, I can’t believe how much I’ve come to like and rely on Eclipse.
I still find myself hitting escape every now and then, but I also do that in web forms and Lotus Notes. I still use vim a lot for casual editing, and editing anything that isn’t a Java source file (including Perl). And I still wish it worked a bit better. Oh, and every few weeks it just locks up tight and I have to kill it and restart it. Plus it’s turned me into an absolute maniac about hunting down and eliminating Eclipse warnings, even when they’re incredibly minor.
Because our code was written with Java 1.2 and is only now supporting Java 1.5, I wish the “Infer Generic Types” functionality worked a bit better. Often times it misses something completely obvious, like today when I had “Iterator foo = bar.method()” where bar.method() is defined to return “Iterator
Also, I’ve had absolutely no luck at all the couple of times I’ve used the “Refactor” stuff – it usually bombs out without refactoring anything, and can’t tell you why.
Another strike against it is that it compiles everything together, which means that it allows programmers to violate self-imposed cross library restrictions like when somebody added some database code into a library that has to run both on machines with database and ones without them. He didn’t know he’d done anything wrong, because Eclipse happily compiled it, but when it came time to do a proper “make” for building the code for packaging, it failed because that Makefile didn’t include the jar file with the database code. And if make hadn’t failed, it would have failed on the integration machines because that database jar isn’t on the non-database machines.
But other than that, I find it extremely helpful – the command completion isn’t bad, and probably has cut down the number of times I have to look at the JDK API docs by about 50%. Hitting F3 instead of control-[ to be taken to the method definition for a method call I’m looking at isn’t a big deal, except Eclipse is less likely to take me to a method with the same name in a totally different class. But the thing that I really like is the menu item that finds all references to a given method – very helpful when you’re thinking of changing the method signature or need to know just where in the code somebody is doing this obsolete function so you can figure out what else needs to be re-written.
So after 250 days, I pronounce this experiment a success.
If I could embed vi into various applications, I would be a happy woman. There’s this, but it never worked all that well for me and appears abandoned.
After a couple of months at the new gig, which loves Eclipse in which to do C++, I’m still not happy. I know vi and cvs and I’m fast on the commandline after a couple of decades there. Eclipse suffers from gooey syndrome, where if you navigate down the right one of the myriads of menu options you can eventually find the place where it lets you do the things the designers anticipated you might need to do, but that multiplicity is intimidating and the learning curve is a serious time-sink. Something that used to take a dozen keystrokes now takes a hundred mouse-movements and a matching hundred mouse-clicks to find and maybe a few side trips to the keyboard to fill in text boxes and a case of incipient carpal tunnel. I suppose the commandline intimidates the others worse, though.