New here? Like what you read? Subscribe to my RSS feed. Thanks for visiting!

AppCode – the answer to my IDE woes.

April 15, 2011 | 2 Comments

New here? Like what you read? Subscribe to my RSS feed. Thanks for visiting!

Xcode sucks

There, I said it. Xcode 4 is an improvement on V3.2.5, but it still falls way short of what an IDE should be.

What do I want?

I want features that other IDEs had in 2004. For starters, what about:

1. Sane, fast cursor movement

Cursor movement in Mac OS X is a total mess. After having used Mac OS X for nearly ten years, option left/right still feels totally broken. It skips newlines, hyphens, brackets and a whole heap of other important characters.

It’s bad enough that Xcode doesn’t modify this behaviour. But the fact that it doesn’t add any other useful commands except camel case movement is unforgivable. I spend half my time in Xcode hammering the arrow keys to get the cursor where I want it to be, which is slow and frustrating.

2. Refactoring

My reaction of “Wow! It’s finally got refactoring!” when I saw this added was quickly replaced by a sense of “is that it?”. No adding parameters to methods. No reordering of parameters. No changing of types within methods. No move method. The list of missing refactorings goes on and on. That would be bad enough, but when you do try and refactor it’s painfully, achingly slow. I’ve had a simple rename of a method in a 20 line class take longer than it would have done rename it manually. There’s no way of skipping the painful preview stage either.

3. Autocomplete

Riddle me this – what are the top ten most commonly used keywords in C? I’m pretty sure void would be up there somewhere. So why does Xcode 3 consistently autocomplete vo to be voidPtr? So annoying. And sometimes when you hit tab twice, the autocomplete decides to complete something that simply wasn’t displayed. Xcode 4 autocomplete is better. But in the year 2011 autocomplete should be a solved problem.

4. Full integration with source control

In Xcode 3 there’s SVN support which I’ve never got working. Xcode 4 has better support and a new UI. But only Subversion and Git are supported.

5. Tabs

Xcode has never had tabs. It relies exclusively on you using a crazy multiple window setup (I don’t know how anyone using this can stay sane) or broken history navigation and Open Quickly… which doesn’t have any fuzzy search and a several other shortcomings.

The Absolute Minimum

These five features should be the absolute minimum in an IDE. You’re sacrificing the speed of a text editor. Xcode 3 expects you to sacrifice this speed for dodgy autocomplete and crappy refactoring. Not a good trade.

Xcode 4 supposedly ups the ante by promising autocomplete that works and integration with Git. Sorry, Apple, but that’s pathetic. We’re in 2011 and you’ve got almost $40 billion in the bank. So why is Xcode about 8 years behind every other IDE?

Up until now, all this complaining didn’t really lead anywhere. I just spouted this stuff off at any poor soul who would listen.

Enter AppCode, stage left

cidr_icon_2.png

Finally, there’s a proper alternative to Xcode. AppCode from JetBrains. It’s still very, very early days – it’s an EAP, so not even a Beta, but even at this stage it gives Xcode a good run for it’s money and totally kills it in several areas. I’m running it alongside Xcode and it’s been of enormous benefit.

What’s so great about it? Let’s look at my five essentials.

1. Sane, fast cursor movement

AppCode overrides the stupid Option left/right system defaults with something much better that recognises brackets, braces and symbols we use as Cocoa developers every day.

It doesn’t have a dedicated keyboard shortcut for camel case movement (although you can turn this on for Option left/right movement in the preferences), but it adds a whole slew of genuinely useful movement commands that should have been in Xcode from day one. Here’s the Go To menu:

GoToMenu.jpg

Holy cow.

Highlights

2. Refactoring

This is where it gets really, really good. The only thing I can see that’s missing is Extract Class… But you can change parameters in methods, change return values, extract methods, the list goes on and on. I can’t say enough good things about this.

RefactorMenu.jpg

ChangeSigDialog.jpg

Let me hear you say “drool”. Drooooool.

3. Autocomplete

This is slow. But it gives sane suggestions and my void bugbear is fixed.

4. Full integration with source control

Use CVS, Mercurial, Git and Subversion. And the list of features for Git makes the menu nearly go off the screen.

GitMenu.jpg

5. Tabs

Tabs by default. And they work as you’d expect. You can configure a maximum number of them, reorder them, lots of good stuff here.

6. And the rest…

There’s a wonderful world of coding pleasure to be had in AppCode that I’ve not touched on. Here are a few of my favourites I’ve found so far.

And lots, lots more.

There’s still some gaps – I can’t seem to compile my project in any reasonable timeframe and it’s still very slow in places. It’s also very ugly, using some kind of horrible Java swing UI framework, but with features like these, I couldn’t care less.

If you’re an Objective C coder who’s frustrated by the limitations of Xcode, I urge you to give it a go. You can try it for free at http://www.jetbrains.com/objc/.

As JetBrains would say, “code with pleasure”!

Post to Twitter Post to Delicious Post to Facebook Post to Reddit Post to StumbleUpon

Comments

2 Responses to “AppCode – the answer to my IDE woes.”

  1. Taras Tielkes on April 15th, 2011 5:51 pm

    Are you sure there is no CamelCase movement?

    I haven’t tried AppCode yet, but all other JetBrains IDEs have a setting for this.

    For example, in IntelliJ IDEA: Settings->Editor->Smart Keys->”Use CamelHumps words”

  2. John on April 16th, 2011 12:21 am

    Wow. You’re right. Thanks for the find! There is such an insane number of options in that screen. And that’s a brilliant thing. I never agree when people say “you should always aim to have nothing in your preferences”. It depends, and for a tool like AppCode, loads of preferences is definitely a great thing.

    Thanks for pointing that out. I still think there should be a different key combo for whole words and camel case words though.

Leave a Comment