Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: attribute collisions ín Moose

by gwadej (Chaplain)
on Apr 14, 2009 at 13:48 UTC ( [id://757390]=note: print w/replies, xml ) Need Help??


in reply to attribute collisions ín Moose

Although theoretically reasonable, this ability to have attributes (and/or methods) in a derived class completely different semantically than in the derived class is usually not very practical. As stvn points out, most OO developers aren't bothered by this lack.

I would go a bit further and say that any design based on this kind of feature is highly suspicious.

Contrary to what many people seem to have learned about OO, inheritance is an extremely strong form of coupling. You can't really ignore your base class while deriving. After all, by inheriting you are declaring that the derived class is just like the base class with a few extensions (or specializations). That is after all what an ISA relationship means.

Having a public attribute in a derived class that is radically different from the same named public attribute in the base class is a recipe for maintenance nightmares (he says from personal experience).

I am not (yet) a big user of Moose. But I've been doing OO in multiple languages for about 15 years. I have seen many systems that have tried to take advantage of this kind of feature over the years. Every single one of them was a source of ongoing bugs and pain.

I feel that if you find yourself in this position, the code is trying to tell you that you need to revisit your design.

G. Wade

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://757390]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (5)
As of 2024-04-19 16:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found