• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Design for Cocoa (was Re: Can a subclass of NSDictionary do this?)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Design for Cocoa (was Re: Can a subclass of NSDictionary do this?)


  • Subject: Re: Design for Cocoa (was Re: Can a subclass of NSDictionary do this?)
  • From: Jim Rankin <email@hidden>
  • Date: Wed, 23 Jul 2003 11:46:54 -0400

On Wednesday, July 23, 2003, at 12:44 AM, Wade Tregaskis wrote:

Yet, if I try to design something, all I come up with are questions - "can I use this for this problem?", "is this efficient/fast enough for this use?", "can I put this through this to do this?", etc. There's no way I can find of solving these without writing the appropriate code! I understand that sometimes you need to go back and revise your design, but when you're doing that after every new line of code, really, what's the point of having written the [wrong] design in the first place?

What you're describing is akin to the Extreme Programming methodology. Some of the keys to Extreme Programming are:

1. Short iterations. Plan to have something you can show users/customers/beta testers every few weeks or so. This keeps you from spending lots of time developing something your customers might not want.
2. Test first. That's what the OCUnit and (what was the other one?) thread was about a little while back. That way you have the confidence and flexibility to change implementation and design details without breaking things that already work (if the test still succeeds, you're good).
3. Refactor. This means going back to improve the design of code that already works to make it easier to maintain and enhance in the future. Automated testing allows you to do this and still be confident you didn't break anything.

Extreme Programming was developed to address some of the shortcomings of the design-first methodology that the old timers are preaching to you. It has a lot of adherents, and you can find lots of passionate arguments both for and against.

One more thing: a lot of the controversy over Extreme Programming is its advocacy for pair programming, meaning always having a team of two people working together at one computer on one piece of code at a time. This, to my mind is the least important part of the methodology and the rest of the principles work just as well without it.

Best,
-jimbo
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

  • Follow-Ups:
    • Re: Design for Cocoa (was Re: Can a subclass of NSDictionary do this?)
      • From: Georg Tuparev <email@hidden>
    • Re: Design for Cocoa (was Re: Can a subclass of NSDictionary do this?)
      • From: Chris Hanson <email@hidden>
References: 
 >Re: Can a subclass of NSDictionary do this? (From: Chris Hanson <email@hidden>)

  • Prev by Date: [OT] Re: Bug reports and documentation updates (was Re: Subclassing NSPort (or NSSocketPort))
  • Next by Date: Re: Bug reports and documentation updates
  • Previous by thread: Re: Design for Cocoa (was Re: Can a subclass of NSDictionary do this?)
  • Next by thread: Re: Design for Cocoa (was Re: Can a subclass of NSDictionary do this?)
  • Index(es):
    • Date
    • Thread