Thursday, October 18, 2012

Looking at Jet Brain's App Code

TL;DR

App Code has some pros and cons when compared to XCode. It's pros center around a rich editing, refactor, code navigation, and debug feature sets. It's cons have to do with interface, performance, XIB editing, and testing. Can't be used on its own but could have some uses. The performance issues and high price tag create a barrier for specialized use. However, it has a few features are worth taking a look at.

Performance

In general App Code takes longer to start up and takes more memory. The Barhappy iOS project takes between 4-10 seconds to open in XCode, and ~45 seconds in AppCode. Afterwards XCode's memory footprint ins ~150MB and AppCode's is ~350. Code hinting is sluggish. Building is slower. In general the experience with XCode is much snappier.

Interface

This is kind of a draw, both Codes, X and App, have their drawbacks and benefits. AppCode looks like a Java Swing application, and I wouldn't be suprised if it was built on Eclipse (Could explain sluggishness). The windows aren't as bloated as eclipse panels, but overall doesn't look very good. Also, Eclipse style settings menus are always kinda out of control.

The file pane does have one neat feature, hovering over files or folders with partially obscured names reveals the whole name in a tool tip looking thing. A nice solution to a common problem.

awesome tooltip thingy

Editing Files

Editing files is where AppCode really shines, but also reveals one of its major flaws.

The one area where AppCode destroys XCode is linking between related files. XCode has the assistant editor, but AppCode links between superclasses, subclasses, method implementations, and definitions. This makes navigating code much easier with AppCode.

Like Eclipse, AppCode has some features that can help with source editing and cleanup. Automatic import statement insertion is convenient.

XCode highlights unused locals, but AppCode also highlights unused heads, instance variables, and methods without implementations. Fixing these issues in XCode can be frustrating but would be trivial with this notification system.

There is also a code cleanup feature that regularizes the white space formatting of property and method definitions, kinda nice.

AppCode's Generators are also pretty sweet. This provides scaffolds for common implementations such as properties, instance methods, and method overrides.

A major con is that AppCode opens .xib files in XCode for editing.

Building, Debugging, and Testing

AppCode doesn't do well here.

Firstly run and debug are seperate processes. This may seem minor, but run doesn't listen to breakpoints and when I have to wait an extra minute for a build because I hit run instead of debug, it's kind of an issue.

Once the project rebuilds and launches in debug mode. Appcode adds a couple neat features. Run to cursor allows the user to select a line to run the program to without setting another breakpoint. Step into with ignoring libraries, keeps you from going into assembly code when stepping through a program.
The appcode site claims that it works with previously created xcode projects, but AppCode doesn't seem to work with the default test builds. I didn't see a build option for creating test projects, and couldn't find documentation for it on their website. Downer.

missing docs

Summary

AppCode Certainly excells at some areas, especially linking related files, that I wish XCode would improve on. But, for me these are not enough to overcome its few shortcomings. Because of the inability to edit .xibs and , AppCode will have to be a support application. Unfortunately, it's sluggishness and price ($199 per liscence) make it hard to justify this role. That said, if you're unhappy with XCode as a Code Editor, AppCode is worth a look.

1 comment:

  1. http://i.imgur.com/DYMPy.png
    this is one of my favorite menu options

    ReplyDelete