重用不同范围内的变量名称

时间:2014-07-22 07:12:34

标签: perl

如下面的$DimensionSwitch示例所示,我喜欢重用变量的名称。我知道$DimensionSwitch是词法范围的,所以它似乎没有引起任何问题,但(1)它可能会导致某些我不知道的问题,因此(2)重用变量的做法很差Perl中的名字?

my $DimensionSwitch = checkDimensions(\@coefficients,\@predictors);
sub checkDimensions{
    my @a1 = @{$_[0]};
    my @a2 = @{$_[1]};
    my $Size1 = @a1;
    my $Size2 = @a2;
    my $DimensionSwitch;
    if ($Size1 == $Size2){
        $DimensionSwitch = 1;
    }else{
        $DimensionSwitch = 0;
    }
    return $DimensionSwitch;
}

3 个答案:

答案 0 :(得分:2)

  1. 不应该
  2. 本身并不坏。如果它使阅读代码更加困难,那就太糟糕了
  3. 和代码......

    my $DimensionSwitch = int(@coefficients == @predictors);
    

答案 1 :(得分:1)

在Perl中使用pragma'use strict'非常有用。这个pragma并不是所有人的治疗方法,但是你也可以使用'使用警告',并且自我会告诉你许多讨厌的事情:)

http://perldoc.perl.org/strict.html

答案 2 :(得分:1)

不禁止在词法范围内重用变量名称,但可能会造成混淆并造成微妙的维护问题。

您可以使用Perl::Critic::Policy::Variables::ProhibitReusedNames作为分析工具。

一个漂亮的网络界面允许您上传您的代码,以便以不同程度的残暴here进行分析。