The title may be slightly exaggerated but when you grow used to a tool like IntelliJ Idea you start to become spoiled by everything it gives you. First off refactoring support in Idea is second to NONE! Honestly, there are no front runners. When you code in Idea you can literally feel the text of the source code under your finger tips. Now going from Idea to, say Eclipse isn’t too bad because Eclipse supports 98% of the refactorings that Idea has out of the box but it likes to torture you with dialog boxes. (I don’t like to be prompted or questioned when I know what I’m doing. If I ask to extract a method, or variable or rename something don’t give me some damned options just do what I ask!!!) Now going from Idea to something like visual C++.. phew!!! Talk about shell shock! Let’s just say it’s nice and toasty in the Idea house while somebody in the MSDN camp forgot to pay PPL. Ok now let’s move from Idea to XCode. Not as frigid as it was when we bolted butt-naked into Redmond with VS but still pretty darned cold. Why am I complaining?
Typical use case:
Dev guy writes a method. Dev guy later sees that he picked a dumb name for said method. (The method name should be a generic toggleView not a specific gotoTheVerySpecificUseCaseViewThatIThoughtOfAt10pmWhileIWasDrinkingPabstBeer) Now in Idea I use a hot-key on the method name type the new name and click run. (Nobody taps me on the shoulder to ask me if I’d like fries with that refactoring as they do in Eclipse land.) I just tried that fancy recipe in XCode and when I run I get an error. I didn’t even look at the details when GDB started to grind and slow the vent handling. I already knew from the last time I tried right-click and refactor a method name from the implementation. The refactorer doesn’t get those tough to reach spots. You know how when you ask you daughter to clean her room and she only gets the visible areas but you really wanted her to clean the back of that nasty closet? Or like when you buy one of those store brand toothbrushes with the labeling “Each! Compare to Reach toothbrush…” In other words, there were remnants left behind from the refactoring. This is completely unacceptable! As much as Apple pays attention to detail in their products I’d expect nothing less than perfection in their IDE! I don’t think this is an area where I’m misusing the tool either. refactor/rename should understand the Cocoa environment well enough to understand that I need IBOutlets referenced in nib files updated as well. I guarantee you that the folks at JetBrains would not have left this stone unturned.