Perl::Critic::Policy::ControlStructures::ProhibitPostfixControls.3pm

Langue: en

Version: 2008-03-08 (mandriva - 01/05/08)

Section: 3 (Bibliothèques de fonctions)

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 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
   }
 
 

CONFIGURATION

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 set of flow-control functions that are exempt from the restriction can also be configured with the 'flowcontrol' directive in your .perlcriticrc file:

  [ControlStructures::ProhibitPostfixControls]
  flowcontrol = warn die carp croak cluck confess goto exit
 
 

NOTES

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.

AUTHOR

Jeffrey Ryan Thalhammer <thaljef@cpan.org> Copyright (c) 2005-2008 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.