2013-10-07 3 views

risposta

7

if/elsif/else catene sono la migliore opzione maggior parte del tempo - tranne quando qualcosa di completamente diverso è meglio che sia if/elsif/elseegiven/when, che è in realtà abbastanza spesso. Esempi di approcci "completamente diversi" sono la creazione di diversi tipi di oggetti per gestire scenari diversi, e lasciare che il dispatch di metodi faccia il tuo lavoro per te, o trovare un'opportunità per rendere il tuo codice più guidato dai dati. Entrambi, se sono appropriati e li fai bene, possono ridurre notevolmente il numero di costrutti "switch statement" nel tuo codice.

+6

In altre parole, la raccomandazione è di tornare allo stile di codifica utilizzato prima dell'introduzione del "dato-quando-predefinito"! ** Trovo molto frustrante, ** – lexu

0

Proprio come supplemento, ho trovato che una combinazione di 'for' e if/elsif/else è buona se si dispone di un dato/quando/codice di default che deve essere rapidamente aggiornato. Basta sostituire given con for e sostituire le dichiarazioni when con una cascata di if & elsif e sostituire default con else. Ciò consente a tutti i test di continuare a utilizzare implicitamente $_, richiedendo meno riscrittura. (Ma ricorda che altre funzioni speciali di corrispondenza intelligente non funzioneranno più.)

Questo è solo per il codice di riscrittura che già utilizza dato/quando, però. Per scrivere un nuovo codice, @hobbs ha la risposta giusta.

+0

Attenzione anche che un 'next' all'interno di' given' si comporterà diversamente da un 'next' in' for'. –