On 19 October 2013 09:55, Karen Etheridge <p...@froods.org> wrote: > I don't think a top level interface is generally appropriate for these > sorts of things >
Indeed, not everything that exports is called Exporter::<*> Exporter:: is instead mostly filled with modules for the purpose of exporting, not simply because they export. Just with roles there's a lot of vague ways interfaces can exist and be named, so anything other than Role:: seems like namespace pollution. ie: Role::HasMessage becoming simply "HasMessage" seems like a step backward to me, its just there's no better name for it. There's literally no other behavioural context to go on than the "HasMessage" property, as although this module may be used for exceptions predominantly, nothing about the roles behaviour indicates that it is exception-only, so "exception" being a namespace token just makes people overlook it. So in a nutshell: *Where it is possible and logical to do so, use some prefix relevant to the problem your module is suited for. ( ie: Foo::Role::Blah , Blahinterface role for Foo ) * *Where otherwise, a Role:: prefix is preferred over no prefix at all. * -- Kent