My only complaint about MooseX::ABC is that when using with other modules it's load order is very sensitive (it has to be last) and this isn't clearly documented. It's useful to use in the place of Roles when Roles won't work. if you apply a role that has an attribute you can't override it in the class that uses the attribute, but if you are extending a base class you can override it, because overriding attributes only works through inheritance. It also allows you to use requires in a base class so that you can require subclasses to implement behavior.
2 out of 2 found this review helpful. Was this review helpful to you? Yes No
MooseX::ABC is well put-together, but it appears to be a partial reimplementation of Moose::Role. That's not to say a role is just another term for an abstract class, but rather that it's not at all clear why one would want to use an abstract class instead of a role, or what MooseX::ABC can do that Moose::Role can't. If there are advantages, the documentation should have some explanation.
1 out of 2 found this review helpful. Was this review helpful to you? Yes No