Função sobrecarga parâmetros vs. padrão em VB.NET?
-
08-07-2019 - |
Pergunta
Em VB.NET, que é melhor usar: sobrecarga de funções ou padrão parâmetros
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.