Hacker News new | ask | show | jobs
by hrabago 4203 days ago
I got the impression before that the only people who really like Xcode are those that have never used any other IDE. Are you one of the exceptions?

> incomprehensible buttons everywhere that Xcode doesn't seem as feature full to them My issues with Xcode isn't the lack of buttons, it's the lack of functionality. I started with Borland IDE's for Pascal and Java, then Jetbrains IDEs for Java, JS/HTML, and now Obj C, and through those, the tool became an extension of my person. I've been using Xcode now since 2009 and I find that it still gets in the way instead of helping me translate thought into code. It's gotten better in letting me know what I might need, but still falls short of actually letting me have it.

3 comments

I used Borland Codegear and C++ Builder before that for a number of years, then moved to Visual Studio, spent significant time in Eclipse developing Android apps, and also spent a large amount of time in KDevelop and Code::blocks under Linux.

Xcode took some getting used to when I first came across it ("Where are all the buttons? How come the big PLAY button at the top runs the app but doesn't CONTINUE like it does in VS? Why are there no floating windows? How come the project and target options are a big list of stuff instead of tabbed pages? (The filter helps!) Why does it crash if I have a large header with many #defines in it? How do I easily switch between Release and Debug targets? Why is there no built-in TODO/FIXME filter?").... but having used it for a few years and having seen the updates to it and daily using it, I really really enjoy using it now. The debug overview of memory use and CPU/Network use and deep Instruments integration ("where am I leaking?!?! Let's just take a look!"), as well as the splitting usage by thread during runtime is really helpful and there isn't much going on screenwise, so I just have to look at code. The recent version is better than the previous one because it has a logical call graph shown for each thread instead of a popup irritating menu like the previous one (click click click click misclick arrgggh)

The navigation bar at the top is also strangely useful, with back and forward buttons! I never thought I'd miss that but I do if I go elsewhere.

A trip back to VS (admittedly an old version, thanks work) makes for unpleasant experiences (argh building is sooooo slow, where are parallel builds???).

The 'callers/callees' list is really helpful when inside a function to see where things are getting called from; admittedly no refactor support for C++ is disappointing but I don't really use refactoring much.

EDIT: One thing I really really really miss from Visual Studio is the Ctrl-Shift-Space shortcut for showing function parameters. You get them as a hint first time in Xcode and it might shove them into the text where you can tab between parameters but with overloaded functions it typically chooses the wrong function. With VS the popup hint dynamically changes as you're typing to show the right overload, and I miss it.

> My issues with Xcode isn't the lack of buttons, it's the lack of functionality.

I always hear this, but never the specific feature that some other IDE offers. Please share.

I'm using AppCode for code editing and debugging, and XCode for practically everything else (project settings, designer, etc). These are features I'm using every single day:

* Buttons and toolbars - I don't use any. I have more or less consistent shortcuts between AppCode and XCode, and for less used features I'm using Cmd+Shift+A shortcut. It's an equivalent Cmd+Shift+P in Sublime and more powerful feature search than standard Cmd+? (which search only inside menus).

* Code navigation - put cursor on function, variable, property, whatever, press Alt+F7. You'll get a split panel, on the left are all places where function/variable/property is used (and you can filter it by read or write access), on the right is the preview panel, so you can see the code without changing cursor position in your main editor.

* Code navigation - Cmd + Ctrl + J to easily jump between function definition and declaration

* Refactoring - rename: yes, XCode have Rename, but AppCode rename is much more streamlined: put cursor on method/property name, press Ctrl+Cmd+E, change the name in place, as I'm typing every occurrence of the method/property name changes. I press Enter and the change is done, without modal dialog to review change. And rename works on protocols, too.

* Refactoring - Change Signature: in case I need to reorder function parameters. Put cursor on method name, Cmd+F6, reorder/rename parameters. And AppCode is smart enough to try to preserve natural flow of words - if the function is called saveContent:toFile, when I reorder params it will become saveToFile:content:

* Refactoring - easy promotion from ivar to property. And vice versa.

* Local history - I try to commit as often as possible, but I like an ability to see what I changed on the file in last couple of hours (with diff). And that option saved my ass couple of times.

* AppCode marks methods/properties that aren't used. I like to delete code. Less code is better. Very useful after refactoring.

* Better editor - I can split my editor horizontally/vertically however times I wish.

* Better editor - Shift + Ctrl + 1 - 9 will toggle quick bookmark. Ctrl + Alt + 1 - 9 will jump on the bookmark.

* Better editor - Cmd + Alt + UpArrow will expand selection. First sub-word (up to first "hump" in camel case) will be selected, then the whole word, then the next word, then the whole line... Cmd + Alt + DownArrow will go the other way.

* Better editor - Shift + Alt + Up/Down Arrow (or Shift + Alt + Click) will make multiple cursors, just like Sublime. Handy for changing lots of similar text lines.

* Better editor - select couple lines of code, Alt + Cmd + T will bring "Surround With..." popup. Press the mnemonic on the right to surround text with if, if/else, while, respondsToSelector, #ifdef,@try/@catch, etc, etc, etc. Time saver.

* Better editor - type SomeVeryLongClassNameIReallyHateToTypeTwice* var = alloc, press Tab, and AppCode will change "alloc" with [[SomeVeryLongClassNameIReallyHateToTypeTwice alloc] init]. Time saver.

* Better editor - Cmd+N will bring "Generate" popup where you can choose "Override method" or "Implement method", among other things. When the list of methods to implement/override is shown, you just type to narrow the selection. It's way faster to implement mandatory or optional delegate methods that way than to XCode-like start typing return value, then tableView: (for example) and picking the right method from the list.

Etc, etc - there's many more small things that good IDE ( * ) does to make programming more enjoyable. This list is just from top of my head.

-----

( * ) AppCode is just "good". For "very good" see Visual Studio + Resharper.

I've used a number of IDEs. My favourite would certainly be IntelliJ, but Xcode would probably be second, certainly above Eclipse and Visual Studio (though the last version of VS I used seriously was 2003, at which point it was clinky and awful; things may have changed).