2013-10-07 2 views

Antwort

7

if/elsif/else Ketten sind die beste Option die meiste Zeit - es sei denn, etwas ganz anderes ist besser als beideif/elsif/elseundgiven/when, die oft tatsächlich vernünftig ist. Beispiele für "völlig unterschiedliche" Ansätze sind die Erstellung verschiedener Objekttypen für die Behandlung verschiedener Szenarien. Die Methodenvermittlung erledigt Ihre Arbeit für Sie oder bietet die Möglichkeit, Ihren Code datengesteuerter zu gestalten. Beide können, wenn sie geeignet sind und Sie sie richtig machen, die Anzahl der "switch statement" -Konstrukte in Ihrem Code erheblich reduzieren.

+6

Mit anderen Worten, die Empfehlung ist, zu dem Coding-Stil zurückzukehren, der vor der Einführung des 'given-while-default' verwendet wurde! ** Ich finde das sehr frustrierend, ** – lexu

0

Nur als Ergänzung habe ich festgestellt, dass eine Kombination aus 'für' und if/elsif/else gut ist, wenn Sie einen gegebenen/wann/default Code haben, der schnell aktualisiert werden muss. Ersetzen Sie einfach given durch for und ersetzen Sie die when Anweisungen durch eine Kaskade von if & elsif, und ersetzen Sie default durch else. Dies ermöglicht, dass alle Ihre Tests weiterhin $_ implizit verwenden und weniger Umschreiben erfordern. (Aber beachten Sie, dass andere spezielle Smart-Match-Funktionen nicht mehr funktionieren.)

Dies ist nur für das Umschreiben von Code, der bereits gegeben/wann verwendet. Um neuen Code zu schreiben, hat @hobbs die richtige Antwort.

+0

Passen Sie auch auf, dass sich ein 'nächstes' innerhalb 'gegeben' anders als ein' nächstes 'innerhalb' für' verhält. –

Verwandte Themen