1 ##############################################################################
2 # $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/lib/Perl/Critic/Policy/ClassHierarchies/ProhibitAutoloading.pm $
3 # $Date: 2008-07-03 10:19:10 -0500 (Thu, 03 Jul 2008) $
6 ##############################################################################
8 package Perl::Critic::Policy::ClassHierarchies::ProhibitAutoloading;
15 use Perl::Critic::Utils qw{ :severities };
16 use base 'Perl::Critic::Policy';
18 our $VERSION = '1.088';
20 #-----------------------------------------------------------------------------
22 Readonly::Scalar my $DESC => q{AUTOLOAD method declared};
23 Readonly::Scalar my $EXPL => [ 393 ];
25 #-----------------------------------------------------------------------------
27 sub supported_parameters { return () }
28 sub default_severity { return $SEVERITY_MEDIUM }
29 sub default_themes { return qw( core maintenance pbp ) }
30 sub applies_to { return 'PPI::Statement::Sub' }
32 #-----------------------------------------------------------------------------
35 my ($self, $elem, undef) = @_;
37 if( $elem->name eq 'AUTOLOAD' ) {
38 return $self->violation( $DESC, $EXPL, $elem );
45 #-----------------------------------------------------------------------------
53 Perl::Critic::Policy::ClassHierarchies::ProhibitAutoloading - AUTOLOAD methods should be avoided.
57 This Policy is part of the core L<Perl::Critic> distribution.
62 Declaring a subroutine with the name C<"AUTOLOAD"> will violate this
63 Policy. The C<AUTOLOAD> mechanism is an easy way to generate methods
64 for your classes, but unless they are carefully written, those classes
65 are difficult to inherit from. And over time, the C<AUTOLOAD> method
66 will become more and more complex as it becomes responsible for
67 dispatching more and more functions. You're better off writing
68 explicit accessor methods. Editor macros can help make this a little
74 This Policy is not configurable except for the standard options.
79 Jeffrey Ryan Thalhammer <thaljef@cpan.org>
83 Copyright (C) 2006 Jeffrey Ryan Thalhammer. All rights reserved.
85 This program is free software; you can redistribute it and/or modify
86 it under the same terms as Perl itself.
92 # cperl-indent-level: 4
94 # indent-tabs-mode: nil
95 # c-indentation-style: bsd
97 # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :