최근에는 코드에 Perl::Critic을 더 자주 사용하기로 결정했습니다. Perl에서 7 년 가까이 프로그래밍 한 후에는 오랫동안 대부분의 Perl 베스트 프랙티스에 정착했지만 항상 개선의 여지가 있음을 알고 있습니다. 그래도 나를 괴롭 히고있는 한 가지는 Perl::Critic이 서브 루틴을 위해 @_을 풀어주는 방식을 좋아하지 않는다는 사실입니다. 예를 들어 :Perl :: Critic이 shift를 사용하여 서브 루틴 변수를 채우는 것을 왜 싫어합니까?
sub my_way_to_unpack {
my $variable1 = shift @_;
my $variable2 = shift @_;
my $result = $variable1 + $variable2;
return $result;
}
이는 양쪽 PerlMonks에 논의되어 나는 항상 그것을 수행하고, 한 방법이며 스택 오버플로, 그 not necessarily evil 중 하나. 위의 코드를 변경
...
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은 내가 선호하는 방식을 왜 잘못 생각합니까? 나는 교대로 짐을 풀어 가증스러운 범죄를 저지르고 있는가?
내 생각에 다른 사람이 Perl::Critic 메인테이너와 함께 기상해야한다고 생각하십니까?
Perl :: Critic은 변수가 지정되지 않은 경우'@ _ '에서 작동하는'shift '와 같은 "magic"을 사용하기 때문에 Perl :: Critic이 마음에 들지 않습니다. 그것은 어떤 Perl :: Critic 규칙이 이것을 바꾸고 싶어하는지 알면 도움이 될 것입니다. – Powerlord
제쳐두고, 목록 형식의 할당을 사용하면 Komodo Edit/IDE에서 서브 루틴에 대한 인수를 알 수 있습니다. –
Brad에게 감사드립니다. 나는 그것을 깨닫지 못했습니다. 나는 오래 된 ViM 사용자이기 때문에 대개 코모도 편집이 내 앞에 놓고있는 것을 무시하지만, 나는 항상 그것이 어떻게 작동하는지 궁금해했습니다. – Weegee