Lorsque j'ai une fonction qui pourrait recevoir ou non un certain paramètre, est-il préférable de surcharger la fonction ou d'ajouter des arguments facultatifs?
Si chacun a ses hauts et ses bas - quand devrais-je les utiliser?
Lorsque j'ai une fonction qui pourrait recevoir ou non un certain paramètre, est-il préférable de surcharger la fonction ou d'ajouter des arguments facultatifs?
Si chacun a ses hauts et ses bas - quand devrais-je les utiliser?
Réponses:
Si le langage les prend en charge correctement (par exemple, la sécurité de type, le cas échéant), je préférerais des arguments facultatifs pour les raisons suivantes:
a
, b
et c
a ces possibilités: rien, a, b, c, ab, ac, bc, abc. C'est 2^n
pour différents types, pasn!
En supposant une situation de constructeur: je choisis souvent un modèle de constructeur fluide pour éviter les situations avec de nombreuses options.
Par exemple. Ordering.natural().onResultOf(function).reverse().compound(Ordering.natural().onResultOf(function2))
est un exemple d'appel d'une interface de générateur fluide implémentée dans Guava.
Bien sûr, vous avez maintenant besoin d'un objet séparé pour conserver l'état de votre générateur, mais vous réduisez la complexité globale en séparant le comportement de la construction du comportement du construit.