I had a first in-depth look at the material Martin Fowler is
collecting for his future DSL book. It is very good stuff (again and
again).
http://martinfowler.com/dslwip/
I provides us with a terminology for our different DSL constructs.
From reading all this, I think we are on a good track. Yet there is
one smell we have, from what is explained there. Usually we have a
separate Groovy object which adds the DSL goodies to our API. In
Martin Fowlers terms, this Groovy object is an 'Expression Builder'
providing a 'fluent interface' on top of our 'push-buttons API'. But
in some of our 'push-buttons API' we have also element for a 'fluent
interface'. Martin Fowler recommends that this is strictly separated
(with some exceptions that don't apply to us). We have this future
plan, to ship also a Java build script engine. But we probably
shouldn't bother in our Java API about this, but add a Java Expression
Builder on top. It might make sense that the Groovy Expression Builder
inherits from the Java Expression Builder.
- Hans
--
Hans Dockter
Gradle Project lead
http://www.gradle.org
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email