Как объявить переменную для использования в нескольких 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