Re: Design for Cocoa (was Re: Can a subclass of NSDictionary do this?)
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.