В последнее время я решил начать использовать 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 ?