| Perl-Critic documentation | Contained in the Perl-Critic distribution. |
Perl::Critic::Policy::ClassHierarchies::ProhibitAutoloading - AUTOLOAD methods should be avoided.
This Policy is part of the core Perl::Critic distribution.
Declaring a subroutine with the name "AUTOLOAD" will violate this
Policy. The AUTOLOAD mechanism is an easy way to generate methods
for your classes, but unless they are carefully written, those classes
are difficult to inherit from. And over time, the AUTOLOAD method
will become more and more complex as it becomes responsible for
dispatching more and more functions. You're better off writing
explicit accessor methods. Editor macros can help make this a little
easier.
This Policy is not configurable except for the standard options.
Jeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Copyright (c) 2006-2011 Imaginative Software Systems. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Perl-Critic documentation | Contained in the Perl-Critic distribution. |
############################################################################## # $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/distributions/Perl-Critic/lib/Perl/Critic/Policy/ClassHierarchies/ProhibitAutoloading.pm $ # $Date: 2011-05-15 16:34:46 -0500 (Sun, 15 May 2011) $ # $Author: clonezone $ # $Revision: 4078 $ ############################################################################## package Perl::Critic::Policy::ClassHierarchies::ProhibitAutoloading; use 5.006001; use strict; use warnings; use Readonly; use Perl::Critic::Utils qw{ :severities }; use base 'Perl::Critic::Policy'; our $VERSION = '1.116'; #----------------------------------------------------------------------------- Readonly::Scalar my $DESC => q{AUTOLOAD method declared}; Readonly::Scalar my $EXPL => [ 393 ]; #----------------------------------------------------------------------------- sub supported_parameters { return () } sub default_severity { return $SEVERITY_MEDIUM } sub default_themes { return qw( core maintenance pbp ) } sub applies_to { return 'PPI::Statement::Sub' } #----------------------------------------------------------------------------- sub violates { my ($self, $elem, undef) = @_; if( $elem->name eq 'AUTOLOAD' ) { return $self->violation( $DESC, $EXPL, $elem ); } return; #ok! } 1; #----------------------------------------------------------------------------- __END__
# Local Variables: # mode: cperl # cperl-indent-level: 4 # fill-column: 78 # indent-tabs-mode: nil # c-indentation-style: bsd # End: # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :