Supponendo che tu abbia funzioni che richiedono un numero crescente di parametri opzionali (e uno pseudo linguaggio che non consente parametri opzionali e un numero arbitrario di parametri) come questo:
function doStuff(Param a)
function doStuff(Param a, Param b)
function doStuff(Param a, Param b, Param c)
Che cos'è un buon modo per unificarli in una singola chiamata? Posso immaginare due disegni:
Infila tutto:
function doStuff(Param a)
doStuff(a, defaultB)
function doStuff(Param a, Param b)
doStuff(a, b, defaultC)
function doStuff(Param a, Param b, Param c)
// magic goes here
- The Upside: non molta duplicazione del codice, semplice modifica di un singolo parametro predefinito.
- Il lato negativo: molte chiamate di funzioni, potrebbero rendere gli stacktraces più difficili da leggere o inutili.
Oppure chiama direttamente la funzione 'last':
function doStuff(Param a)
doStuff(a, defaultB, defaultC)
function doStuff(Param a, Param b)
doStuff(a, b, defaultC)
function doStuff(Param a, Param b, Param c)
// magic goes here
- The Upside: non ci sono molte chiamate di funzione, non ti preoccupare se una nuova funzione viene aggiunta alla catena.
- Il lato negativo: gran parte della duplicazione del codice, in particolare i valori predefiniti.
A cosa non ho pensato?