gpt4 book ai didi

perl - 为什么 Perl::Critic 不喜欢使用 shift 来填充子例程变量?

转载 作者:行者123 更新时间:2023-12-03 01:20:13 25 4
gpt4 key购买 nike

最近,我决定开始使用 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 上讨论的那样,它的 not necessarily evil要么。

将上面的代码片段更改为...

sub perl_critics_way_to_unpack {
my ($variable1, $variable2) = @_;

my $result = $variable1 + $variable2;
return $result;
}

...也可以,但我发现它更难阅读。我还读过达米安康威的书Perl Best Practices我真的不明白我首选的解包方法如何符合他的建议,避免直接使用 @_ ,如 Perl::Critic暗示。我一直觉得康威在谈论一些肮脏的事情,例如:

sub not_unpacking {
my $result = $_[0] + $_[1];
return $result;
}

上面的示例很糟糕且难以阅读,我永远不会考虑将其写入一段生产代码中。

简而言之,为什么Perl::Critic认为我的首选方式不好?我用shift拆包真的犯了滔天大罪吗?

除了我之外,其他人是否认为这应该与 Perl::Critic 一起提出来?维护者?

最佳答案

简单的答案是 Perl::Critic 在这里并没有遵循 PBP。这书中明确指出,转变习惯用法不仅可以接受,而且在某些情况下实际上是首选。

关于perl - 为什么 Perl::Critic 不喜欢使用 shift 来填充子例程变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2275317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com