最近,我决定开始在我的代码中更频繁地使用Perl::Critic 。在使用 Perl 编程近 7 年之后,我已经习惯了大部分 Perl 最佳实践很长一段时间,但我知道总有改进的余地。一直困扰着我的一件事是Perl::Critic不喜欢我为子例程解压缩 @_ 的方式。举个例子:
sub my_way_to_unpack {
my $variable1 = shift @_;
my $variable2 = shift @_;
my $result = $variable1 + $variable2;
return $result;
}
这就是我一直这样做的方式,并且正如 PerlMonks 和 Stack Overflow 上所讨论的那样,它也不一定是邪恶的。
将上面的代码片段更改为...
sub perl_critics_way_to_unpack {
my ($variable1, $variable2) = @_;
my $result = $variable1 + $variable2;
return $result;
}
...也可以,但我发现它更难阅读。我还阅读了 Damian Conway 的《Perl Best Practices 》一书,但我并不真正理解我喜欢的解包方法如何符合他的建议,即避免@_
直接使用,正如Perl::Critic所暗示的那样。我一直认为康威在谈论肮脏,例如:
sub not_unpacking {
my $result = $_[0] + $_[1];
return $result;
}
上面的例子很糟糕而且难以阅读,我永远不会考虑在一段生产代码中编写它。
所以简而言之,为什么Perl::Critic认为我的首选方式不好?使用shift拆包真的犯了滔天大罪吗?
这是不是我以外的人认为应该与Perl::Critic维护者一起提出的问题?