Supondo que você tenha funções que utilizam um número crescente de parâmetros opcionais (e uma pseudo linguagem que não permite parâmetros opcionais e um número arbitrário de parâmetros) como este:
function doStuff(Param a)
function doStuff(Param a, Param b)
function doStuff(Param a, Param b, Param c)
Qual é uma boa maneira de unificá-los em uma única chamada? Eu posso imaginar dois desenhos:
Caia em tudo:
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: Pouca duplicação de código, alteração fácil de um único parâmetro padrão.
- A desvantagem: muitas chamadas de função podem tornar o Stacktraces mais difícil de ler ou inútil.
Ou chame diretamente a função '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: Poucas chamadas de função, não se preocupa se uma nova função for adicionada à cadeia.
- A desvantagem: Muita duplicação de código, especialmente os valores padrão.
O que eu não pensei?
aebou nenhum), mas o primeiro ainda vence por minimizar a duplicação de bugs. BTW, erro de digitação: a implementação de sobrecarga média deve ser idêntica entre os exemplos.