<!-- --><style type="text/css">@import url(https://www.blogger.com/static/v1/v-css/navbar/3334278262-classic.css); div.b-mobile {display:none;} </style> </head><body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d7256432\x26blogName\x3dThe+Frustrated+Programmer\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLACK\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttp://frustratedprogrammer.blogspot.com/search\x26blogLocale\x3den_US\x26v\x3d2\x26homepageUrl\x3dhttp://frustratedprogrammer.blogspot.com/\x26vt\x3d5012862196962223429', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>
| Tuesday, August 24, 2004

Kelly was a hard-core emacs user, while I used vi. We went our separate ways when Fusura.com imploded. In the last year I've fallen in love with IDEA, but the reasons I use it are common to most IDEs. Now that we are working at the same company again, I've tried to explain these reasons to Kelly with no results. This is an open letter to him in an attempt to explain why spending a few hours up front to configure an IDE will save days in the end...


  • Fast opens - In IDEA I just use ^N to open any file in the project. No more cds, not more clicking through directory trees. I just start to type the file name and IDEA gives me the available matches across all the directories in the project.

  • Find usages - I used to have to generate JavaDoc or find+grep to find all the callers of a method or variable. This is a ton easier.

  • Goto declaration/implementation - Not completely unique to an IDE, since I can some of this with ctags, but its still a huge help.

Refactoring - There are plenty of refactorings available in IDEs, but these are the ones I commonly use.

  • Extract Method - Not only is IDEA really handy at breaking up complicated code, it also finds where I've cut and pasted this code and cleans those up too!

  • Rename - On my new project, I'm starting to attend code reviews. Its obvious people have never used an IDE with refactoring support. There were three differnent naming conventions used in one file. When its this easy to fix things, it makes it so painless.

  • Safe Delete - Not only does IDEA check is your file is used across Java code, but it also checks my struts-config.xml, web.xml and my JSPs.


  • No compile errors - Sounds simple, but I went back to VI and saw a compile error for the first time in a year.

  • Code Generation

    • I write instance variables and generate getters, setters and constructors.

    • I write my struts action and while I'm doing it I call a method in my business logic that doesn't exist yet, passing it a constant from another file that doesn't exist yet, IDEA generates the stubs for these for me.

    • When I cut and paste code, IDEA automatically formats and adds missing imports for me.

These are my reasons, they're features I use on a daily basis. If you have more, please add a comment. If you've actually tried an IDE and are still using an editor, please leave a comment too.