ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Duncan Davidson <dun...@x180.net>
Subject Re: Did somebody say Shut up and Write? :)
Date Wed, 20 Dec 2000 04:38:41 GMT
On 12/19/00 12:16 PM, "James Cook" <jimcook@iname.com> wrote:

> I hate to sound like I'm a whiny child here, but you guys should really read
> my proposal before you start thinking about implementation specifics like
> workspace/module.

I have. You state that the one of the reasons for treating everything as a
task is for efficiency. And you note that Ant spends cycles analyzing the
dependencies between targets. I think you over stress the impact of these on
performance. In fact, in a typical build of even a small project of 10 or so
class files -- Ant spends so little of its time in the setup necessary to
assemble the project tree *and* analyze dependencies that this is not worth
optimizing out. Almost all time is spent in the compiler or in other tasks
-- the impact of which is beyond the control of the core.

As interesting as it is to view the world as a tree of single type nodes,
when you get into using things for long its inevitable that some sort of
specialization creeps in somewhere. And its actually quite useful at times.
Genericity is not necessarily your friend. Yes, this is a biased opinion --
it's based on 3 1/2 years of coding Java at JavaSoft though if that means
anything.

Also, as appealing as it is to say that all things should implement
interfaces -- it doesn't always work out so well in practice. I've been a
heavy proponent of interfaces everywhere in the past. And a strong detractor
of inheritance no matter how shallow. However, after working that way for a
few years, I've found that there are a few problems with this. Once you code
an interface, you should *not* touch it. It's a published thing that, if you
change it, breaks other things in subtle and nasty ways. Also, in *so* many
cases that I've used interfaces in to allow all sorts of implementations
behind -- I've found that there have been 1, maybe 2 implementations of
those interfaces. And for that you pay in extra code, extra class load time,
etc.

That's not to say that interfaces are bad either -- they have their place.
And that place is in very specifically defined long lasting unchanging code
where there are going to be *lots* of implementations. I'm talking about
things like JDBC, JAXP, Servlets, etc. And even there -- you'll see that
there are actually quite a few abstract classes instead because there is
functionality that needs to be there of some sort.

-- 
James Duncan Davidson                                        duncan@x180.net
                                                                  !try; do()


Mime
View raw message