2016-01-12 2 views
-1

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

первый случай (я использую этот путь):

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 

второй случай:

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 

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

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

EDIT

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

EDIT 2

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

Минимизирующий масштаб

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

+1

Вы хотите использовать этот YNC после концов if? Я полагаю, да? Затем попробуйте объявить его несколько раз внутри ifs. [Области в Visual Basic] (https://msdn.microsoft.com/en-us/library/1t0wsc67.aspx) – Steve

+0

@Steve Это возможно. У меня несколько вопросов с msgbox. Спасибо за ссылку, но я знаю, ограничен лимит. Мой вопрос: что лучше и почему? – genespos

ответ

1

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

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

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

+0

С точки зрения удобочитаемости и качества кода это стоит того, чтобы беспокоиться о –

0

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

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

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

0

Разница возникает после вашего опубликованного кода.

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