Suponiendo que tiene funciones que toman un número creciente de parámetros opcionales (y un pseudo lenguaje que no permite parámetros opcionales y un número arbitrario de parámetros) como este:
function doStuff(Param a)
function doStuff(Param a, Param b)
function doStuff(Param a, Param b, Param c)
¿Cuál es una buena manera de unificarlos en una sola llamada? Me imagino dos diseños:
Caer a través de todo:
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
- El lado positivo: no hay mucha duplicación de código, fácil cambio de un solo parámetro predeterminado.
- La desventaja: muchas llamadas a funciones pueden hacer que Stacktraces sea más difícil de leer o inútil.
O llame directamente a la función 'última':
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
- La ventaja: no hay muchas llamadas a funciones, no se preocupe si se agrega una nueva función a la cadena.
- La desventaja: mucha duplicación de código, especialmente los valores predeterminados.
¿En qué no pensé?
aybo ninguno), pero la primera todavía gana para reducir al mínimo la duplicación de errores. Por cierto, error tipográfico: la implementación de sobrecarga media debe ser idéntica entre los ejemplos.