[development] Module Builder Module 1.0
Larry Garfield
larry at garfieldtech.com
Wed Feb 22 04:40:13 UTC 2006
On Tuesday 21 February 2006 07:26, Angie Byron wrote:
> At DrupalCon, a few of us had talked about how handy it would be to have a
> module that automatically generated "scaffolding" for modules, both to help
> new developers as well as to speed up the process of creating custom
> modules for Drupal veterans.
>
> As a result of a major bout of insomnia, I am pleased to announce that
> Module Builder Module 1.0 has been committed to CVS, and even pretty much
> works! ;) You can check it out at:
OK, I've not actually looked at it yet, so I can't comment on how
good/late-night the code is, but my knee-jerk reaction is that I don't like
code generation in the first place. If the code is sufficiently boilerplate
that it can be auto-generated, then it's sufficiently boilerplate that it
should be written as a single routine and called with paramters. That's the
logic behind functions and variables. :-)
As a for-instance:
hook_load(), hook_insert(), and hook_update() are horribly redundant. All
three do the same thing in almost any node. They select/insert/delete fields
from a table, using almost the same code. Sometimes there will be an extra
table to manipulate, but there's still almost always a basic node++ table.
And the fields have to be specified in all of them. Ick!
The solution, however, isn't to have something that auto-generates those
functions. It's to let the module define the table and fields once and then
let node.module handle the basic S-I-D. Save those hooks for stuff that's
actually interesting, and reduce the amount of code, too.
I'm thinking something like:
nodename_fields() {
return array('nodenametable' => array('field1', 'field2', 'field3'));
}
That would also allow node_load() to return an "empty node" of the correct
type, which would help with E_ALL compliance.
(Yes, this is something I've been thinking about for some time, but have been
holding back on actually trying to implement because I didn't want to
introduce a change of that size when we've been "almost ready to get 4.7 out
the door" since, uh, November. Hi, Ber! <g> I actually did something very
similar to this at work, so I know it can be done.)
So yeah, code generation in general gets a -1 for me in favor of more powerful
and generalized polymorphic code.
--
Larry Garfield AIM: LOLG42
larry at garfieldtech.com ICQ: 6817012
"If nature has made any one thing less susceptible than all others of
exclusive property, it is the action of the thinking power called an idea,
which an individual may exclusively possess as long as he keeps it to
himself; but the moment it is divulged, it forces itself into the possession
of every one, and the receiver cannot dispossess himself of it." -- Thomas
Jefferson
More information about the development
mailing list