Pergunta

Em VB.NET, que é melhor usar: sobrecarga de funções ou padrão parâmetros

Foi útil?

Solução

é o código vai ser utilizado por outros idiomas? Se assim for, que oscila a balança para sobrecargas enquanto ainda carregam a resposta de Hamish em mente. Em particular, C # não suporta parâmetros opcionais - ainda ...

É certo que este não seria realmente impedir alguém usando seu código de C #, ele só poderia ser uma dor para eles.

Se houver um monte de parâmetros e eles logicamente representam alguma coisa, você pode querer considerar encapsulando-os em conjunto, da mesma forma que Process trabalha com ProcessStartInfo. Isso é particularmente agradável de C #, devido à inicializadores de objeto.

Se isto é para construção, você pode também considerar o padrão do construtor como uma variante deste. Por exemplo, em Protocol Buffers posso fazer algo como:

Person jon = new Person.Builder { Name="Jon", Age=32,
                                  Spouse="Holly", Kids=3 }.Build();

que acaba sendo muito legível enquanto ainda a criação de uma pessoa de uma só vez (em uma expressão, e sem ter que transformar a pessoa em si - na verdade o tipo de mensagem é imutável, é apenas o construtor que não é)

Outras dicas

Se os parâmetros são opcionais (isto é, as sobrecargas são um subconjunto dos parâmetros que a assinatura procedimento completo aceita), então o padrão ou parâmetros opcionais faria mais sentido.

Se a sobrecarga está permitindo que um tipo diferente para o parâmetro ou é um parâmetro semanticamente diferente que será interpretado de forma diferente pela rotina, em seguida, sobrecargas faria mais sentido.

FYI

Se você quiser adicionar um parâmetro para uma função ou método que é chamado de outros conjuntos, então:

Você pode sobrecarregar, fazendo uma função adicional com o parâmetro extra.

Ou você pode adicionar um parâmetro opcional, MAS: você tem que recompilar todos os conjuntos que chamar esta função, mesmo que eles não precisam usar o novo parâmetro opcional! Este não é geralmente o que as pessoas esperam (expecially aqueles usados ??para a forma como VB6 obras). Basicamente, você não pode escorregar em um novo parâmetro opcional para uma função e esperamos que seja totalmente compatível com versões anteriores. Além disso, como eu o entendo, se você mudar o que o valor padrão é, você precisa reconstruir todas as montagens que pedem a mudança ao trabalho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top