Расширенное С-ключевое слово в VB.NET - PullRequest
0 голосов
/ 29 октября 2010

В моем текущем проекте каждый называет переменные и методы после того, что они есть и что они делают. Это хорошо для быстрого понимания кода, но с большим количеством длинных переменных имен возникают некоторые головные боли, например, при копировании набора данных в сущность / объект. Таким образом, пока вы понимаете код, читаемость все еще имеет удар.

veryLongVariableName.Id = datasetVeryLongVariableName.Id
veryLongVariablename.Something = datasetVeryLongVariableName.Something
etc.

Использование VB.NET с ключевым словом может помочь.

With veryLongVariableName

    .Id = datasetVeryLongVariableName.Id
    .Something = datasetVeryLongVariableName.Something

End With

Теперь, мой вопрос, есть ли способ использовать With или что-то подобное, но для нескольких переменных одновременно? Что-то вроде:

With veryLongVariableName As a, datasetVeryLongVariableName as b

    a.Id = b.Id
    a.Something = b.Something

End With

Я все за описательные соглашения об именах, но они, как правило, мешают. Особенно в VB!

Ответы [ 3 ]

4 голосов
/ 29 октября 2010

Если код, который выполняет эти наборы присваиваний, является частью одного логического действия, то вы можете преобразовать его в собственный вызов метода / функции. Хотя это не дает конкретного ответа на ваш вопрос о множественном числе с использованием, оно улучшило бы удобочитаемость в соответствии с предложениями из популярных книг, таких как Code Complete.

4 голосов
/ 29 октября 2010

Нет, это невозможно.

With работает только с одним объектом.См. MSDN .

Вы можете, однако, nest With операторов (хотя это не рекомендуется, поскольку в конечном итоге ваш код может стать действительно нечитаемым).

2 голосов
/ 29 октября 2010

За кулисами все ключевое слово With объявляет временную переменную, которая ссылается на указанный вами объект. Его ссылки будут скомпилированы с точно таким же IL-кодом, что и полная квалификация имени объекта, поэтому не будет никакого снижения производительности. Вы можете легко сделать это самостоятельно:

Dim a as MyClass = veryLongVariableName
Dim b as MyOtherClass = datasetVeryLongVariableName

a.Id = b.Id
a.Something = b.Something
...