Quando ho una funzione che potrebbe o non potrebbe ricevere un determinato parametro, è meglio sovraccaricare la funzione o aggiungere argomenti facoltativi?
Se ognuno ha i suoi alti e bassi - quando dovrei usarli?
Quando ho una funzione che potrebbe o non potrebbe ricevere un determinato parametro, è meglio sovraccaricare la funzione o aggiungere argomenti facoltativi?
Se ognuno ha i suoi alti e bassi - quando dovrei usarli?
Risposte:
Se la lingua li supporta correttamente (ad es. Sicurezza dei tipi, se applicabile), preferirei argomenti opzionali per i seguenti motivi:
a
, b
e c
ha queste possibilità: niente, a, b, c, ab, ac, bc, ABC. È 2^n
per diversi tipi, nonn!
Supponendo un tipo di situazione costruttiva: spesso scelgo un modello di costruttore fluente per prevenire situazioni con molte opzioni.
Per esempio. Ordering.natural().onResultOf(function).reverse().compound(Ordering.natural().onResultOf(function2))
è un esempio di chiamata a un'interfaccia builder fluente implementata in Guava.
Ovviamente ora hai bisogno di un oggetto separato per contenere lo stato del tuo costruttore, ma riduci la complessità complessiva separando il comportamento di costruzione dal comportamento del costruito.