On Dec 15, 2006, at 7:52 AM, Chris Dolan wrote:


That can't be right. Negation does not contribute to complexity. Instead, I believe it is the for loop and the exit points that are increasing your count. Consider rewriting the for as ifs and gotos:

   sub complexity_of_six {
       my $bar = shift;
       my $total = 0;
       my $type = ref $bar;
       if ( ! $type ) {
           $total = $bar;
       }
       elsif ( $type eq 'ARRAY' ) {
           my $_i = 0;
         LOOP:
           goto DONE if ($_i >= @{$bar});
           my $baz = $bar->[$_i];
           $total += $baz;
           $_i++;
           goto LOOP;
         DONE:
       }
       else {
           confess("Don't know how to handle refs to $type");
       }
       return $total;
   }

Just for the record, Perl::Metrics::Simple gives that code a complexity count of 8. I realize that I'm not actually counting 'ne', 'eq', 'ge', or 'le', which is probably a bug :-)

I'm totally interested in better way(s) to measure this by the way.

-------------------------------------------------------
Matisse Enzer <[EMAIL PROTECTED]>
http://www.matisse.net/  - http://www.eigenstate.net/



Reply via email to