| /usr/local/perl/lib/site_perl/5.8.5/Perl/Critic/Policy/ControlStructures/ProhibitPostfixControls.pm |
Perl::Critic::Policy::ControlStructures::ProhibitPostfixControls
Conway discourages using postfix control structures (if, for,
unless, until, while). The unless and until controls
are particularly evil because they lead to double-negatives that are
hard to comprehend. The only tolerable usage of a postfix if is
when it follows a loop break such as last, next, redo, or
continue.
do_something() if $condition; #not ok
if($condition){ do_something() } #ok
do_something() while $condition; #not ok
while($condition){ do_something() } #ok
do_something() unless $condition; #not ok
do_something() unless ! $condition; #really bad
if(! $condition){ do_something() } #ok
do_something() until $condition; #not ok
do_something() until ! $condition; #really bad
while(! $condition){ do_something() } #ok
do_something($_) for @list; #not ok
LOOP:
for my $n (0..100){
next if $condition; #ok
last LOOP if $other_condition; #also ok
}
A set of constructs to be ignored by this policy can specified by giving a
value for 'allow' of a string of space-delimited keywords: if, for,
unless, until, and/or while. An example of specifying allowed
flow-control structures in a .perlcriticrc file:
[ControlStructures::ProhibitPostfixControls] allow = for if until
By default, all postfix control keywords are prohibited.
The die, croak, and confess functions are frequently used as
flow-controls just like next or last. So this Policy does
permit you to use a postfix if when the statement begins with one
of those functions. It is also pretty common to use warn, carp,
and cluck with a postfix if, so those are allowed too.
Jeffrey Ryan Thalhammer <thaljef@cpan.org>
Copyright (c) 2005-2007 Jeffrey Ryan Thalhammer. 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.
| /usr/local/perl/lib/site_perl/5.8.5/Perl/Critic/Policy/ControlStructures/ProhibitPostfixControls.pm |