The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Perl::Critic::Policy::NamingConventions::ProhibitAmbiguousNames

DESCRIPTION

Conway lists a collection of English words which are highly ambiguous as variable or subroutine names. For example, $last can mean previous or final.

This policy tests against a list of ambiguous words for variable names.

CONSTRUCTOR

This Policy accepts an additional key-value pair in the constructor, The key is 'forbid' and the value is a string of forbidden words separated by spaces. Any specified list replaces the default list.

The default list is:

    last set left right no abstract contract record second close bases

For example, to override the default list:

    my $pkg = 'Perl::Critic::Policy::NamingConventions::ProhibitAmbiguousNames';
    my $policy = $pkg->new(forbid => 'last set');

METHODS

default_forbidden_words()

This can be called as a class or instance method. It returns the list of words that are forbidden by default. This list can be overridden via a perlcriticrc file.

For example, if you decide that bases is an OK name for variables (e.g. in bioinformatics), then put something like the following in $HOME/.perlcriticrc:

    [NamingConventions::ProhibitAmbiguousNames]
    forbid = last set left right no abstract contract record second close

BUGS

Currently this policy checks the entire variable and subroutine name, not parts of the name. For example, it catches $last but not $last_record. Hopefully future versions will catch both cases.

Some variable statements will be false positives if they have assignments where the right hand side uses forbidden names. For example, in this case the last incorrectly triggers a violation.

    my $previous_record = $Foo::last;

AUTHOR

Chris Dolan <cdolan@cpan.org>

COPYRIGHT

Copyright (c) 2005 Chris Dolan. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of this license can be found in the LICENSE file included with this module.