В последнее время я решил использовать 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;
}
... тоже работает, но мне труднее читать. Я также прочитал книгу Дамиана Конвей Perl Best Practices, и я действительно не понимаю, как мой предпочтительный подход к распаковке подпадает под его предложение, чтобы избежать используя @_
напрямую, поскольку Perl::Critic подразумевает. У меня всегда было впечатление, что Конвей говорил о гадости, например:
sub not_unpacking {
my $result = $_[0] + $_[1];
return $result;
}
Приведенный выше пример плох и трудно читается, и я никогда не подумал бы написать это в куске производственного кода.
Итак, почему Perl::Critic считают мой предпочтительный способ плохой? Действительно ли я совершаю распаковку отвратительного преступления, используя смену?
Будет ли это что-то, что другие люди, кроме меня, должны быть воспитаны с Perl::Critic поддерживающими?