No such thing as a small change | |
PerlMonks |
Re: attribute collisions ín Mooseby gwadej (Chaplain) |
on Apr 14, 2009 at 13:48 UTC ( [id://757390]=note: print w/replies, xml ) | Need Help?? |
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
In Section
Seekers of Perl Wisdom
|
|