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!

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top