/ProgrammingStyle

Рекомендации по оформлению кода

Primary LanguageFreeBASICGNU General Public License v3.0GPL-3.0

Стиль кода

Рекомендации по оформлению кода.

Форматирование

Пробелы

Операторы следует отбивать пробелами:

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

Не следует использовать оператор 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