[Prev][Next][Index][Thread]

Re: Design methodology in an OODL environment



shepherdofchaos@cs.com (Levi Conley) writes:

> Dylan?  What I'm imagining (hoping, in fact) that developing with
> Dylan will allow (encourage even) is a kind of jump right in the
> middle and code your way out approach, an iterative, spiralling
> development cycle, expanding and improving along the way without
> running into major roadblocks (beyond simple ignorance, which is easy

There are a lot of features in Dylan that assist you in a delevopment
style like that.

The major feature here is probably dynamic typing, write code now and
worry about specific types and performance later. For instance, in an
early phase of development you would just write

define square(x)
  x * x;
end;

and don't worry about the type of x at all. You'll get a runtime
exception when calling square for a type which has no * operation
defined. The price you pay is runtime overhead for type checking and
dynamic dispatch, which you can eliminate in a later development phase
by specifying types.

Another interesting details is the fact that Dylan always generates
getter and setter methods for slots of objects. So if you decide one
day that you want to change the implementation of an object, for
instance by recalculating a value every time instead of storing it in
the object, the interface remains the same, and you don't need to
touch the code that uses the object.

But Dylan doesn't magically free you from having to make design
decisions and thinking about optimization. It just allows you to
postpone these decisions until you know more about the problem, and
makes it easy to change your mind about a detail later.

It is helpful to know about Refactoring (get the book by the same name
from Martin Fowler).

Andreas

-- 
"In meinen Augen ist es niemals ein Verbrechen, Wissen zu stehlen. Es
ist ein guter Diebstahl. Der Pirat des Wissens ist ein guter Pirat."
                                                       (Michel Serres)



References: