Palavra-chave estendida com em VB.NET
-
27-09-2019 - |
Pergunta
No meu projeto atual, todos nomeiam variáveis e métodos de acordo com o que são e o que fazem.Isso é bom para entender rapidamente o código, mas com muitos nomes de variáveis longos surgem algumas dores de cabeça, como ao copiar um conjunto de dados para uma entidade/objeto.Portanto, embora você entenda o código, a legibilidade ainda sofre um golpe.
veryLongVariableName.Id = datasetVeryLongVariableName.Id
veryLongVariablename.Something = datasetVeryLongVariableName.Something
etc.
Usar a palavra-chave With do VB.NET pode ajudar.
With veryLongVariableName
.Id = datasetVeryLongVariableName.Id
.Something = datasetVeryLongVariableName.Something
End With
Agora, minha dúvida, existe alguma forma de usar With, ou algo parecido, mas para diversas variáveis ao mesmo tempo?Algo como:
With veryLongVariableName As a, datasetVeryLongVariableName as b
a.Id = b.Id
a.Something = b.Something
End With
Sou totalmente a favor de convenções de nomenclatura descritivas, mas elas tendem a confundir as coisas.Principalmente em VB!
Solução
Se o código que faz esses conjuntos de atribuições fizer parte de uma única ação lógica, você poderá refatorá-lo em sua própria chamada de método/função.Embora isso não responda especificamente à sua pergunta sobre um múltiplo com uso, melhoraria a legibilidade de acordo com sugestões encontradas em livros populares como Code Complete.
Outras dicas
Não, isso não é possível.
With
funciona apenas com um único objeto.Ver MSDN.
Você pode, no entanto, ninho With
declarações (embora isso não seja recomendado, pois você pode tornar seu código realmente ilegível).
Nos bastidores, todos os With
palavra-chave faz é declarar uma variável temporária que faz referência ao objeto que você especifica.Suas referências serão compiladas exatamente no mesmo código IL que qualifica totalmente o nome do objeto, portanto, não há penalidade de desempenho.Você pode fazer isso facilmente:
Dim a as MyClass = veryLongVariableName
Dim b as MyOtherClass = datasetVeryLongVariableName
a.Id = b.Id
a.Something = b.Something