2009-10-28 11 views

Odpowiedz

17

Nie. Służą one dokładnie temu celowi, jaki opisują i uważam je za fajną cechę języka, który jest używany za mało.

Z drugiej strony, gdy tylko zastanawiam się nad używaniem etykiety, zastanawiam się również, czy mój kodeks wymaga niewielkiej refaktoryzacji.

+1

W większości przypadków, myślę, że kod jest wyraźniejszy przy zastosowaniu etykiet. Przepisanie kodu, aby już z niego nie korzystał, zwykle prowadzi do wielu linii dodatkowego kodu. – Geo

+2

Czasami tak jest, czasami tak nie jest. Zawsze szukam kodu, który jest łatwiejszy do odczytania i zrozumienia. Czasami jest to kod, który używa etykiet. – innaM

+2

Perl Best Practices jest za etykietami. Nie zgadzam się ze wszystkimi PBP, ale myślę, że jest to jedna z jego dobrych rad. Służą one jako dokumentacja, jeśli nic więcej. – hobbs

12

Używanie etykiet z next, last i jest w porządku, ale powinieneś przerwać, aby zastanowić się, czy struktura kodu jest najlepsza. Z mojego doświadczenia rzadko korzystasz z tych operatorów na czymkolwiek poza pętlą otaczającą (co oznacza, że ​​nie musisz używać etykiety).

Używanie goto LABEL jest zdecydowanie odradzane.

8

Zazwyczaj nie ma powodu, aby używać goto LABEL.

Na przykład:

my $i = 10; 
Label: 
# ... 
goto Label if --$i; 

lepiej zapisać jako:

my $i = 10; 
{ 
    # ... 
    redo if --$i; 
} 

Jedyny powód, mogę myśleć użyć etykiety, jest wyrwać się z wielu pętli, lub aby kontynuować zewnętrzną pętlę.

my $i = 10; 
OUTER: while(1){ 
    # ... 
    while(1){ 
    # ... 
    last OUTER unless --$i; 
    } 
} 
my $i = 10; 
OUTER: { 
    # ... 
    { 
    # ... 
    redo OUTER if --$i; 
    } 
} 
Powiązane problemy