Ora che gli sviluppatori Perl hanno deciso di ordinare le istruzioni date/when deprecate, esiste una sostituzione consigliata, oltre a tornare a if/elsif/else?Qual è il rimpiazzo raccomandato per Perl's deprecato-ish dato/quando?
risposta
if
/elsif
/else
catene sono la migliore opzione maggior parte del tempo - tranne quando qualcosa di completamente diverso è meglio che sia if
/elsif
/else
egiven
/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.
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.
Attenzione anche che un 'next' all'interno di' given' si comporterà diversamente da un 'next' in' for'. –
In altre parole, la raccomandazione è di tornare allo stile di codifica utilizzato prima dell'introduzione del "dato-quando-predefinito"! ** Trovo molto frustrante, ** – lexu