Ich finde, dass die Verwendung von Etiketten in Perl-Subroutinen, um von mehreren Schleifen zu brechen, oder um einige Teile mit aktualisierten Variablen zu wiederholen, sehr hilfreich. Wie sieht dieser Codierungsstil in der Community aus? Sind Etiketten in Subroutinen verpönt?Wird die Verwendung von Labels in Perl-Subroutinen als schlechte Methode betrachtet?
Antwort
Nein. Sie dienen genau dem Zweck, den Sie beschreiben und ich betrachte sie als ein nettes Merkmal der Sprache, die zu wenig verwendet wird.
Auf der anderen Seite, wenn ich über die Verwendung eines Etiketts nachdenken, frage ich mich auch, ob mein Code ein wenig Refactoring benötigt.
Verwenden von Etiketten mit next
, last
und redo
ist in Ordnung, aber Sie sollten eine Pause einlegen, um zu prüfen, ob die Code-Struktur die beste ist. Meiner Erfahrung nach müssen Sie diese Operatoren nur selten für andere als die umschließende Schleife verwenden (was bedeutet, dass Sie kein Label verwenden müssen).
Es wird dringend davon abgeraten, goto LABEL
zu verwenden.
In der Regel gibt es keinen Grund, goto LABEL
zu verwenden.
Zum Beispiel:
my $i = 10;
Label:
# ...
goto Label if --$i;
ist besser geschrieben als:
my $i = 10;
{
# ...
redo if --$i;
}
Der einzige Grund, warum ich denken kann, ein Etikett zu verwenden, ist aus mehreren Schleifen zu brechen, oder um eine äußere Schleife fortzusetzen.
my $i = 10;
OUTER: while(1){
# ...
while(1){
# ...
last OUTER unless --$i;
}
}
my $i = 10;
OUTER: {
# ...
{
# ...
redo OUTER if --$i;
}
}
- 1. Wird LINQ für ein einzelnes Objekt als schlechte Methode betrachtet?
- 2. Wird eine Methode erstellt, die als Abstraktion betrachtet wird?
- 3. Java, das einem Parameter einen neuen Wert zuweist, wird dies als eine schlechte Methode betrachtet?
- 4. Warum wird das Blockieren von Callstack in RxJava als schlechte Übung betrachtet?
- 5. Wird SID als empfindlich betrachtet?
- 6. Wird dies als SFINAE betrachtet?
- 7. Wird Mixin als Designmuster betrachtet?
- 8. Warum wird eine globale Variablenklasse (Singleton) als schlechte Methode verwendet?
- 9. Was wird in Angular als Beobachter betrachtet?
- 10. Wird Heap als abstrakter Datentyp betrachtet?
- 11. Wird in Grep nicht als Leerraum betrachtet?
- 12. Wie viele Klassen würden als "schlechte Praxis" betrachtet werden
- 13. Wird dies als eine anonyme Inline-Methode betrachtet?
- 14. Initialisiert für for-Schleifen, die starre Initialisierung in C++ 11 verwenden, die als schlechte Form betrachtet wird?
- 15. Wird Dropbox als verteiltes Dateisystem betrachtet?
- 16. Warum wird "string" als vereinfachte Version von "String" betrachtet?
- 17. Wird "constexpr if" als SFINAE betrachtet?
- 18. Verwendung von Funkendatenrahmen „als“ Methode
- 19. Warum wird createServer() als keine Funktion betrachtet?
- 20. Wird Flash-Einbettung als Active X betrachtet?
- 21. Wird T (x) als Besetzung betrachtet?
- 22. Wird EJB 2 als veraltet betrachtet?
- 23. Wird bei der Überprüfung von Argumenten in einer API, die als bewährte Methode betrachtet wird, eine Ausnahme ausgelöst?
- 24. Warum wird HTTP/SOAP als "dick" betrachtet?
- 25. Verwendet eine Instanz einer Klasse für den Zugriff auf statische Methoden, die als schlechte Methode betrachtet werden?
- 26. Warum wird die Variable 'req' als undefiniert betrachtet?
- 27. Wird die funktionale Programmierung als "mathematischer" betrachtet? Wenn ja warum?
- 28. Gibt es eine schlechte Seite für die Verwendung einer Struktur als Eingabe für eine Methode?
- 29. Die Übernahme von ResponseTree von Ajax wird nicht als HTML-Elemente betrachtet
- 30. Werden Eigenschaften des Window-Objekts als schlechte Methode festgelegt?
In den meisten Fällen, denke ich, der Code klarer mit der Verwendung von Etiketten ist. Das Umschreiben von Code, so dass er sie nicht mehr verwendet, führt normalerweise zu vielen zusätzlichen Codezeilen. – Geo
Manchmal tut es das, manchmal nicht. Ich gehe immer für den Code, der leichter zu lesen und zu verstehen ist. Manchmal ist das der Code, der Labels verwendet. – innaM
Perl Best Practices spricht sich für Labels aus. Ich stimme nicht mit allen von PBP überein, aber ich denke, das ist einer seiner guten Ratschläge. Sie dienen als Dokumentation, wenn nichts anderes. – hobbs