Perl 서브 루틴 내에서 레이블을 사용하거나, 여러 루프에서 분리하거나, 업데이트 된 변수로 일부 부품을 다시 실행하는 것이 매우 유용합니다. 이 코딩 스타일은 커뮤니티에서 어떻게 볼 수 있습니까? 서브 루틴 내부의 레이블을 사용하고 있습니까?Perl 서브 루틴의 레이블을 사용하는 것이 좋지 않다고 생각하십니까?
9
A
답변
17
아니요. 정확하게 설명하는 목적에 부합하며, 너무 익숙해 진 언어의 멋진 기능이라고 생각합니다.
한편, 레이블 사용을 숙고 할 때마다 코드에 약간의 리팩터링이 필요한지 궁금해합니다.
12
next
, last
및 redo
의 레이블을 사용하는 것이 좋지만 코드 구조가 가장 적합한 지 고려해야합니다. 제 경험으로는이 연산자를 둘러싼 루프 이외의 다른 연산자에 사용할 필요가 거의 없습니다 (즉, 레이블을 사용할 필요가 없음).
goto LABEL
을 사용하는 것은 강력하지 않습니다.
8
보통 goto LABEL
을 사용할 이유가 없습니다. 예를 들어
:
my $i = 10;
{
# ...
redo if --$i;
}
내가 레이블을 사용하는 생각할 수있는 유일한 이유는, 여러 루프의 탈옥하는 것입니다, 또는 :
은my $i = 10;
Label:
# ...
goto Label if --$i;
이 더 잘 기록 바깥 쪽 루프를 계속합니다. 대부분의 경우
my $i = 10;
OUTER: {
# ...
{
# ...
redo OUTER if --$i;
}
}
가끔은 그렇지 가끔은 그렇지 않습니다. 나는 항상 읽고 이해하기 쉬운 코드를 찾는다. 때로는 레이블을 사용하는 코드입니다. – innaM
Perl 모범 사례는 레이블을 선호합니다. 나는 모든 PBP에 동의하지 않지만 이것이 좋은 충고 중 하나라고 생각합니다. 아무것도없는 경우 문서로 사용됩니다. – hobbs