So in my last blog post I ranted and most definitely did not rave about the development tool I dislike the most — Xcode. I won’t bother rehashing it, but suffice to say, I’m no fan. And at the end, I briefly mentioned the tool I like the most — AppCode. Then I made you wait to find out why, well that time has finally come!
To me, AppCode is pretty much everything Xcode isn’t — productive, intuitive, extensible and flexible. A few of points listed will likely feel completely subjective, but to a developer there really isn’t much more important than their development tools, so yes, this will be tour down subjective highway for Objective-C. See what I did there?
Where Xcode will feel like it hampers you and tries to force you down one path, AppCode often frees you up to do what works best for you.
– True tab support: opening a file from the tree view will always open in a new tab. And if you already have that file open, you are just taken to the existing tab. Brilliant! Xcode offers the user minimal functionality to modify the tabbing behavior and it still isn’t sufficient.
– Keyboard short cuts for everything. Honestly, every function of the IDE can be bound to a keyboard short cut. Awesome! Xcode exposes a crap ton of functions with keyboard short cuts too … but I hate them. I could modify them, but I hate them.
– Tons of built in, quick to access tools. AppCode exposes a simple to use watch window during execution that is sorely missing from Xcode. I can keep an eye on specific properties or even expressions as I step through my code without having to constantly re-expand the variables listing. There are separate inspector windows for your tree and code structure that can be viewed at the same time. Easy code refactoring. Easy code selection. And more!
This is likely the most subjective section, because what is intuitive to me is likely not intuitive to the rest of the human population. Just as The W about any of the times I make some crazy leap of logic without actually providing context. It happens daily.
– Powerful syntax inspections. There is some decent help in Xcode about fixing basic issues; but, AppCode takes it to the next level. It will give you hints on dead/unreachable code, parameter type mismatches (though honestly, I wish it would ignore the
[NSArray objectAtIndex:[indexpath row]] inspection because no one cares that it should be an
NSInteger but we are passing in an
NSUInteger (though maybe we should?).
– It includes serious HTML/JS support out of the box and inline. Honestly, I don’t use this a lot, but it is super nice to have. AppCode essentially comes with serviceable support for HTML formatting and JS inspection. It is no PHP/WebStorm, but it is good for what it does. I have had a need to occasionally output HTML to a view, and having the syntax highlighting and gutter color preview was extremely helpful.
– Inline documentation viewer. This is just one spot where Xcode really has no comeback — put your cursor in any symbol (variable name, type, whatever) and hit
F1 and AppCode pops up a window displaying relevant documentation for that symbol. Hell, if you place your cursor in the name string of
[UIImage imageNamed:@“Name”] a preview of the image is displayed.
Extensible and Flexible
Here is probably where the real power of AppCode shines through — it can be pretty much anything. AppCode is built on the bones of the uber powerful IntelliJ IDEA, and so inherits many of the amazing features of that editor. It is fast and gorgeous. It is cross platform (though, really AppCode isn’t because no one does Objective-C anywhere but on an Apple computer, but still). The core is always going to be maintained as it transitions from version to version of the underlying IDEA platform.
On top of that level of quality, is the fact that being built on the IntelliJ IDEA platform means AppCode can also run most of the plugins developed for IntelliJ. That means, Objective-C developers can install plugins that add other languages to the IDE including full syntax highlighting, syntax inspections, templates, whatever. Many work for AppCode even though originally developed for IntelliJ. AppCode users can also get interface enhancements through the plugins like a mini-map of the code and integration with most major tool sets. For example, there is a plugin to add a fully featured REST client to the IDE. No longer do you need to pull out your browser and a plugin there, or a different app entirely, to test/prototype your REST calls. You can do it all from within AppCode.
Lastly, AppCode comes with an integration with almost any version control software available. This means a user can be connected to their Github account, Bitbucket account (interestingly, it seems that Atlassian and JetBrains are pretty tight with both being active users of each other’s products where it isn’t a competing service), company SVN, private Git host, etc. This makes it easy to move around with AppCode to various development environments. This agnostic approach means that there are some super useful features within AppCode to help the user manage their history — inline history view, keyboard shortcut to bring up a window to display quick VCS actions, pretty much any functionality exposed within the editor.
So yeah, I love AppCode. It makes developing for iOS and OSX a joy. So much more than Xcode ever has. If you’re ever interested in seeing how I use AppCode on a daily basis, feel free to swing by and let me know!