On Tuesday 27 Apr 2010 18:54:06 Dave Rolsky wrote:
> On Tue, 27 Apr 2010, Shlomi Fish wrote:
> > [code]
> > has '_get_paragraph_tag_name' => (is => 'ro', default => "para");
> > [/code]
> > 
> > And maybe specialise it further using «has '+_get_paragraph_tag_name'»,
> > but it seems like it would be much more verbose.
> 
> I would do this ...
> 
>   has _paragraph_name => ( is => 'ro', builder => '_build_paragraph_name'
> );
> 
> Then in the parent class:
> 
>   sub _build_paragraph_name {
>       die 'This method must be overridden in the child'
>   }
> 

Wouldn't it mean that perl will call the _build_paragraph_name of the sub-
class upon every instantiation of an object? I could be prematurely micro-
optimising in thinking that it matters, though.

> As an aside, naming an attribute with a name starting with "get" is an
> abomination. If you want PBP style accessors, use MooseX::FollowPBP.
> Attribute names should be nouns, not verbs.

Well, first of all, I used _get_ here in my code as a clarification because I 
used it in the sub-class-mutated-constant-method previously. I realise it's 
not wise to use _get_something() for attributes/properties/fields/object-
members/etc. (like has '_get_something'). Otherwise you can have code like 
'$self->_get_something("New Value");'. 

That put aside, I sometimes prefix methods returning calculations (not object 
properties) with "get_" or "calc_". Whether *that* is a good idea, is much 
more of a colour of the bike shed argument, and it probably doesn't matter too 
much. 

Regards,

        Shlomi Fish

-- 
-----------------------------------------------------------------
Shlomi Fish       http://www.shlomifish.org/
"The Human Hacking Field Guide" - http://shlom.in/hhfg

God considered inflicting XSLT as the tenth plague of Egypt, but then
decided against it because he thought it would be too evil.

Please reply to list if it's a mailing list post - http://shlom.in/reply .

Reply via email to