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 usare ciascuno?
Se la lingua li supporta correttamente (ad esempio, type-safety, se applicabile), preferirei argomenti opzionali per i seguenti motivi:
Assumendo un tipo di situazione del costruttore: spesso scelgo un modello di generatore fluente per evitare situazioni con molte opzioni.
Es. Ordering.natural().onResultOf(function).reverse().compound(Ordering.natural().onResultOf(function2))
è un esempio di chiamata a un'interfaccia del generatore fluente implementata in Guava.
Ovviamente ora hai bisogno di un oggetto separato per mantenere lo stato del tuo costruttore, ma riduci la complessità complessiva separando il comportamento di costruzione dal comportamento del costruito.
Leggi altre domande sui tag method-overloading