NAME
Perl::Critic::Policy::ControlStructures::ProhibitPostfixControls
DESCRIPTION
Conway discourages using postfix control structures (if
, for
, unless
, until
, while
). The unless
and until
controls are particularly evil becuase the 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
}
CONSTRUCTOR
This policy accepts an additional key-value pair in the new
method. The key should be 'allow' and the value should be a reference to an array of postfix control keywords that you want to allow. Alternatively, the value can be a string of space-delimited keywords. Choose from if
, for
, unless
, until
,and while
. When using the Perl::Critic engine, these can be configured in the .perlcriticrc file like this:
[ControlStructures::ProhibitPostfixControls]
allow = for if
#or
[ControlStructures::ProhibitPostfixControls]
allow = for
allow = if
By default, all postfix control keywords are prohibited.
AUTHOR
Jeffrey Ryan Thalhammer <thaljef@cpan.org>
Copyright (c) 2005 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.