Как объявить переменную для использования в нескольких IF

Я хотел бы знать, каковы релевантные различия между объявлением переменной один раз (из цикла If-then-else) или несколько раз (в каждом случае):

1-й случай (я использую этот способ):

If A < 0 Then
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
ElseIf A = 0 Then
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
Else
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
End If

2-й случай:

Dim YNC As MsgBoxResult
If A < 0 Then
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
ElseIf A = 0 Then
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
Else
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
End If

Есть ли причина менять мой код?

Я сделал правильный выбор?

РЕДАКТИРОВАТЬ

Я предпочитаю первый, потому что он более читабелен (по крайней мере, для меня)

РЕДАКТИРОВАТЬ 2

Хорошо, я думаю, что я получил свой ответ по ссылке, размещенной Стивом:

Минимизация объема

В общем, при объявлении любой переменной или константы хорошей практикой программирования является сделать область видимости как можно более узкой (область видимости блока является самой узкой). Это помогает экономить память и сводит к минимуму вероятность ошибочного обращения вашего кода к неверной переменной. Аналогично, вы должны объявлять переменную статической (Visual Basic) только тогда, когда необходимо сохранить ее значение между вызовами процедур.

3 ответа

Решение

Это зависит от того, нужно ли вам использовать это значение дальше, чтобы контролировать ход программы.

Если вам снова понадобится значение, у вас не останется иного выбора, кроме как сначала объявить его, в противном случае оно будет выходить за рамки.

Разница в терминах "ресурсов" настолько минимальна (если есть), что о ней не стоит беспокоиться.

В обоих случаях переменная будет сгенерирована так или иначе. Если вы считаете, что код лучше читается, Случай 2 был бы хорош.

Это также приводит к области видимости переменной после IF, так что вы можете использовать ее и после IF..

По моему мнению, CASE 2 будет лучше для разработчика (так как он не повлияет на систему и обеспечит лучшую читаемость и понятность кода для дальнейших изменений).

Разница появляется после вашего размещенного кода.

If A < 0 Then
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
ElseIf A = 0 Then
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
Else
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
End If

' YNC doesn't exists here

,

Dim YNC As MsgBoxResult
If A < 0 Then
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
ElseIf A = 0 Then
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
Else
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select")
    'Some code
End If

' YNC does exists and you can use it
Другие вопросы по тегам