NAME

Perl::Critic::Policy::Moose::ProhibitMultipleWiths - Require role composition

VERSION

version 1.05

DESCRIPTION

Moose::Roles are, among other things, the answer to name conflicts plaguing multiple inheritance and mix-ins. However, to enjoy this protection, you must compose your roles together. Roles do not generate conflicts if they are consumed individually.

Pass all of your roles to a single with statement.

# ok
package Foo;

use Moose::Role;

with qw< Bar Baz >;

# not ok
package Foo;

use Moose::Role;

with 'Bar';
with 'Baz';

AFFILIATION

This policy is part of Perl::Critic::Moose.

CONFIGURATION

There is a single option, equivalent_modules. This allows you to specify modules that should be treated the same as Moose and Moose::Role, if, say, you were doing something with Moose::Exporter. For example, if you were to have this in your .perlcriticrc file:

[Moose::ProhibitMultipleWiths]
equivalent_modules = MyCompany::Moose MooseX::NewThing

then the following code would result in a violation:

package Baz;

use MyCompany::Moose;

with 'Bing';
with 'Bong';

SUPPORT

Bugs may be submitted through the RT bug tracker (or bug-perl-critic-moose@rt.cpan.org).

I am also usually active on IRC as 'drolsky' on irc://irc.perl.org.

AUTHORS

  • Elliot Shank <perl@galumph.com>

  • Dave Rolsky <autarch@urth.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2008 - 2016 by Elliot Shank.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.