September 10, 2013

Reader Response: TDD with ReactiveCocoa and AppCode

Remember my iOS Model-View-Controller TDD screencast? Eric Baker took it a few extra steps with his own follow-up screencast, demonstrating:

There’s a lot of interesting stuff here. But I also want to acknowledge that this screencast changed my mind about dot notation. Yes, really!

What are your thoughts about ReactiveCocoa, Kiwi, or AppCode? Leave a comment below.

__CONFIG_colors_palette__{"active_palette":0,"config":{"colors":{"62516":{"name":"Main Accent","parent":-1}},"gradients":[]},"palettes":[{"name":"Default Palette","value":{"colors":{"62516":{"val":"var(--tcb-skin-color-0)"}},"gradients":[]},"original":{"colors":{"62516":{"val":"rgb(19, 114, 211)","hsl":{"h":210,"s":0.83,"l":0.45}}},"gradients":[]}}]}__CONFIG_colors_palette__
__CONFIG_colors_palette__{"active_palette":0,"config":{"colors":{"49806":{"name":"Main Accent","parent":-1},"3a0f6":{"name":"Accent Light","parent":"49806","lock":{"saturation":1,"lightness":1}}},"gradients":[]},"palettes":[{"name":"Default","value":{"colors":{"49806":{"val":"var(--tcb-skin-color-0)"},"3a0f6":{"val":"rgb(238, 242, 247)","hsl_parent_dependency":{"h":209,"l":0.95,"s":0.36}}},"gradients":[]},"original":{"colors":{"49806":{"val":"rgb(19, 114, 211)","hsl":{"h":210,"s":0.83,"l":0.45,"a":1}},"3a0f6":{"val":"rgb(240, 244, 248)","hsl_parent_dependency":{"h":209,"s":0.36,"l":0.95,"a":1}}},"gradients":[]}}]}__CONFIG_colors_palette__
Previous
__CONFIG_colors_palette__{"active_palette":0,"config":{"colors":{"49806":{"name":"Main Accent","parent":-1},"3a0f6":{"name":"Accent Light","parent":"49806","lock":{"saturation":1,"lightness":1}}},"gradients":[]},"palettes":[{"name":"Default","value":{"colors":{"49806":{"val":"var(--tcb-skin-color-0)"},"3a0f6":{"val":"rgb(238, 242, 247)","hsl_parent_dependency":{"h":209,"l":0.95,"s":0.36}}},"gradients":[]},"original":{"colors":{"49806":{"val":"rgb(19, 114, 211)","hsl":{"h":210,"s":0.83,"l":0.45,"a":1}},"3a0f6":{"val":"rgb(240, 244, 248)","hsl_parent_dependency":{"h":209,"s":0.36,"l":0.95,"a":1}}},"gradients":[]}}]}__CONFIG_colors_palette__
Next

Jon Reid

About the author

Programming was fun when I was a kid. But working in Silicon Valley, I saw poor code lead to fear, with real human costs. Looking for ways to make my life better, I learned about Extreme Programming, including unit testing, test-driven development (TDD), and refactoring. Programming became fun again! I've now been doing TDD in Apple environments for 19 years. I'm committed to software crafting as a discipline, hoping we can all reach greater effectiveness and joy.

  • @jon: just started watching this. Very interested to see someone use ReactiveCocoa. Do offer your thoughts. Tool-talk is a kind of guilty pleasure for most devs, I think.

  • “I thought about posting my thoughts about the tools Eric demonstrates… but I didn’t want to dominate the conversation. What do you think?”

    Of course you should post your thoughts. It’s always good to have more than one opinion.

    Thanks for a great blog. You’ve really inspired me to down the TTD route!

    /Mikael

  • Thanks for sharing this. I also, for the first time, find the usage of dot-notation much simpler and cleaner than non-dot-notation. Looking forward to your post about this topic.

  • Good stuff.
    I think what I’ve taken away from that video is that I want to use ReactiveCocoa.
    I’ll not use it for my current app under work (which is going to be my first App Store submission).

    But I plan on using it for my second.
    Regarding the whole dot notation thing. I was already using it for properties getting/setting (guess it’s my Java background) as I found it personally more readable.
    The direct ivar references were the most readable syntax, but given the lack of KVO there… dot notation is the way to go for me.

    My last comment. I really want to like AppCode (I’m a user of IntelliJ and RubyMine), but I just keep going back to XCode. I think the problem is, AppCode seems to be playing catchup all the time whenever XCode changes, from a point of view of supporting stuff that Apple changes.
    (IntelliJ and RubyMine is less affected my third party changes).
    For example, how well is AppCode playing with XCode5/iOS7 at the moment?

    Thanks Eric and Jon. Good stuff.

    • @Gavin: the current AppCode EAP works pretty well with Xcode 5. There are a few spurious error messages here and there, and simulator launching is intermittently a bit flaky. JetBrains’ openness about the problems that do exist is a very pleasant contrast to dealing with Apple.

      When I first used AppCode I was concerned about exactly this problem, thinking that Apple would constantly shift the bar, and JetBrains would have trouble keeping up. But I haven’t really found that to be the case. They jump on incompatibilities, even with betas, remarkably quickly. About the longest lag I’ve noticed was with being about to use XCTest targets, and that was hardly a big problem (ie. because XCTest doesn’t add anything useful as yet).

      OTOH, Xcode is playing catchup with AppCode as regards basic editing facilities, not always very convincingly. Its new test runner is getting there. Amazing though that its still as primitive as it is as regards refactoring, codebase navigating, code generation etc.

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    Never miss a good story!

    Want to make sure you get notified when I release my next article or video? Then sign up here to subscribe to my newsletter. Plus, you’ll get access to the test-oriented code snippets I use every day!

    >