Cuando tengo una función que podría o no recibir un determinado parámetro, ¿es mejor sobrecargar la función o agregar argumentos opcionales?
Si cada uno tiene sus altibajos, ¿cuándo usaría cada uno?
Cuando tengo una función que podría o no recibir un determinado parámetro, ¿es mejor sobrecargar la función o agregar argumentos opcionales?
Si cada uno tiene sus altibajos, ¿cuándo usaría cada uno?
Respuestas:
Si el lenguaje los admite correctamente (por ejemplo, seguridad de tipo, si corresponde), preferiría argumentos opcionales por las siguientes razones:
fuente
a
,b
yc
tiene estas posibilidades: nada, a, b, c, ab, ac, bc, abc. Es2^n
para diferentes tipos, non!
Suponiendo un tipo de situación de constructor: a menudo elijo un patrón de generador fluido para evitar situaciones con muchas opciones.
P.ej.
Ordering.natural().onResultOf(function).reverse().compound(Ordering.natural().onResultOf(function2))
es un ejemplo de llamar a una interfaz de generador fluida implementada en Guava.Por supuesto, ahora necesita un objeto separado para mantener el estado de su generador, pero reduce la complejidad general al separar el comportamiento de la construcción del comportamiento de lo construido.
fuente