views:

67

answers:

3

Hello,

I have recently started learning cocoa development with a fairly large scale(probably Core Data based) application in mind as my goal. I have been looking into development methodologies that would be used to help build a higher quality product with better code and although I have found a couple that I am sure I would like to use, such as version control(probably with git) there are some others like unit testing that seem like they would be hard to use when the majority of the application is written with IB and Core Data. I would really appreciate some suggestions as to what tools or workflow methods a solo developer should be using.

Thanks.

P.S. First post in SO!

EDIT: By the way I primarily plan to develop for OS X and not the iPhone.

+1  A: 

welcome to SO :-)

One thing I struggle with as a solo dev is discipline...!

Always comment, test, design ahead if you want to increase the quality of your code, reduce the amount of times you re-write something until your interfaces/class structure actually works, and have code that you can come back to in a years time and know what you mean!

Apple have a great guide for Unit Testing

As of iOS 4, Apple have added a UIAutomation framework for testing the User Interface of apps. O'Reilly has a guide here, and you may want to have a peak at Apple's official documentation for UIAutomation

Its fairly new, but it won't hurt to take a look at it.

There has also been a query on SO about automated testing of iPhone apps.

Fuzz
Do you know if most of these articles could be translated to Mac OS X applications fairly easily? I realize that in my post I didn't specify that I am primarily developing for OS X and not iPhone.
Wizecoder
A: 

Our own Chris Hanson did a series of posts about Cocoa and Unit Testing. It isn't as difficult as you think.

Abizern
A: 
  1. use git, it makes it really easy to go back to prior versions
  2. comment your code, as others mentioned you'll need to look at it years later and understand it
  3. get in the habit of building yourself reusable classes. Many tasks you perform when developing will need to be duplicated in other projects
  4. expect that no matter how diligent your try to be, your users will have problems. As such you have to develop a methodology of allowing your customers to report their errors to you that is useful. I recently implemented this for myself. It's basically a way to get meaningful stack traces back from users through email. I learned this here.
regulus6633