Рекомендации по оформлению кода.
Операторы следует отбивать пробелами:
X = A + B
После запятых следует ставить пробелы:
Foo(Param1, Param2, Param3)
Если функция принимает больше двух параметров, каждый параметр следует писать на отдельной строке с дополнительным отступом:
Declare Function Foo( _
ByVal Param1 As Integer, _
ByVal Param2 As Integer, _
ByVal Param3 As Integer _
)As Integer
Function Foo( _
ByVal Param1 As Integer, _
ByVal Param2 As Integer, _
ByVal Param3 As Integer _
)As Integer
Return 0
End Function
Последнюю строку функции с оператором возврата следует отбивать пустыми строками:
Function Foo( _
ByVal Param1 As Integer, _
ByVal Param2 As Integer, _
ByVal Param3 As Integer _
)As Integer
Return 0
End Function
Каждый чемодан следует отделять пустой строкой:
Select Case uMsg
Case WM_INITDIALOG
Dim hMod As HMODULE = GetModuleHandle(0)
Dim ico As HICON = LoadIcon( _
hMod, _
Cast(LPTSTR, IDR_ICON) _
)
SendMessage(hwndDlg, WM_SETICON, ICON_BIG, Cast(LPARAM, ico))
SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, Cast(LPARAM, ico))
Case WM_COMMAND
Select Case LOWORD(wParam)
' Case IDC_BTN_RESULT
' Calculate_Click(hwndDlg)
Case IDCANCEL
EndDialog(hwndDlg, 1)
End Select
Case WM_CLOSE
EndDialog(hwndDlg, 1)
Case Else
Return False
End Select
Условный оператор не должен менять состояние программы.
Результат функции следует присваивать переменной, и затем проверять переменную в условии:
Dim x As Integer = Foo()
If x = 1 Then
'
End If
Не следует вызывать функцию внутри условного оператора. Неправильно:
If Foo() = 1 Then
'
End If
Операторы тоже являются функциями, не следует использовать их в условиях. Неправильно:
If a + b = 2 Then
'
End If
Правильно:
Dim x As Integer = a + b
If x = 2 Then
'
End If
Однострочный условный оператор не используется:
If Variable = 1 Then Foo()
Используется только многострочный условный оператор:
If Variable = 1 Then
Foo()
End If
Не следует использовать оператор ElseIf
:
If Variable = 1 Then
Foo()
ElseIf Variable = 2 Then
Bar()
ElseIf Variable = 3 Then
Baz()
End If
Вместо этого следует использовать оператор выбора чемоданов:
Select Case Variable
Case 1
Foo()
Case 2
Bar()
Case 3
Baz()
End Select
Во избежание неоднозначности нельзя опускать ключевые слова ByVal
или ByRef
при объявлении функции.
В функцию не следует передавать функции:
Bar(Foo())
Результат функции следует присвоить переменной, и только затем передать эту переменную в функцию:
Dim x As Integer = Foo()
Bar(x)
Объявлять переменные следует сразу же с присваиванием в одной строке:
Dim x As Integer = 265
Dim y As Integer = Foo()
Переменные, которые в дальнейшем будут использованы для получения значения по указателю (retval), следует объявлять без инициализации:
Dim Buffer As ZString * 512 = Any
FillBuffer(@Buffer)
Не следует объявлять переменные в строчку:
Dim As Integer a, b, c, d, e