Quando tenho uma função que pode ou não receber um determinado parâmetro, é melhor sobrecarregar a função ou adicionar argumentos opcionais?
Se cada um tem altos e baixos - quando eu usaria cada um?
Quando tenho uma função que pode ou não receber um determinado parâmetro, é melhor sobrecarregar a função ou adicionar argumentos opcionais?
Se cada um tem altos e baixos - quando eu usaria cada um?
Respostas:
Se o idioma os suportar adequadamente (por exemplo, segurança de tipo, se aplicável), eu preferiria argumentos opcionais pelos seguintes motivos:
fonte
a
,b
ec
tem estas possibilidades: nada, a, b, c, ab, ac, bc, abc. É2^n
para diferentes tipos, nãon!
Assumindo um tipo de situação construtora: costumo escolher um padrão de construtor fluente para evitar situações com muitas opções.
Por exemplo.
Ordering.natural().onResultOf(function).reverse().compound(Ordering.natural().onResultOf(function2))
é um exemplo de como chamar uma interface fluente do construtor implementada no Guava.É claro que agora você precisa de um objeto separado para manter o estado do construtor, mas reduz a complexidade geral separando o comportamento da construção do comportamento da construção.
fonte