Объекты в программировании
Имя переменной в среде «Delphi» == «Имя переменной», где «Типизированный префикс» имеет следующие значения: - «Типизированный префикс» для переменных языка Pascal: • s == String • i == Integer • w == WORD • dw == DWORD • by == BYTE • b == BOOL • ch == CHAR • wsh == WideChar • ws == WideString • ui == UINT • l == LONG • h == HANDLE • p == POINTER • I == INTERFACE • v == VARIANT • ov == OleVariant • d == DOUBLE - «Типизированный префикс» для переменных компонентов форм: • btn == TButton, TBitButton; • grid == TGrid,TDBGrid; • lаb == TLabel; • ed == TEdit, TdbEdit, TExtDbEdit; • cb == TComboBox; • chb == TCheckBox; • pan == TPanel; • mem == TMemo; • al == TActionList; • act == TAction; • sb == TStatusBar. Имена переменных указателей формируются путем добавления к «Имя переменной» префикса «p». В зависимости от области видимости, дополнительные префиксы имеют следующие переменные: - Глобальная переменная == префикс «g_» + «Имя переменной». - Переменная член класса == префикс «m_» + «Имя переменной». Временные (регистровые) локальные переменные возможно называть следующим образом: ii, jj, kk и т.д. Не допускаются имена переменных состоящих из одной буквы. Пример: • iStatus (переменная типа «int»); • piStatus (переменная указатель на «int»); • g_iStatus (глобальная переменная типа «int»); • m_iStatus (переменная типа «int», член класса); • m_piStatus (переменная указатель на «int», член класса);
Именование свойств подчиняется правилу образования «Составное имя».
«Имя Константы» — сочетание «Имя» или сокращений на английском языке прописными буквами разделенные символом подчеркивания. Константы определяющие различные значения одного свойства (типа) должны начинаться одинаково и отличаться последней частью наименования. Пример: • RETURN_TYPE_NONE = 0 (константа «возвращаемые значения»); • RETURN_TYPE_BREAK = 1 (константа «возвращаемые значения»); • RETURN_TYPE_CONTINUE = 1 (константа «возвращаемые значения»); • EMSG_REQUEST = ‘Ошибка выполнения запроса’ (константа «сообщения об ошибках») • EMSG_INVALID_TYPE = ‘Инвалидный тип’ (константа «сообщения об ошибках») • TABLE_DESC = record (структура для описания таблицы)
«Имя класса» == префикс «C» + «Составное имя». «Имя класса формы» (для форм созданных дизайнером Delphi) == префикс «Т» + «Составное имя» + постфикс «Form». Пример: • CPresistConnection; • CStrArray; • TMainForm; • TAboutForm.
«Имя модуля» == «Имя класса», в нем реализованного, без префикса «C». «Имя модуля формы» (для форм созданных дизайнером Delphi) == «Имя класса формы» без префикса «Т» + постфикс «Unit». Модули, не содержащие классов, формируются группировкой схожих по области применения или функционалу (в случае процедур и функции) наборов и именуются по следующим правилам: - наборы общесистемных процедур и функции именуют по правилу «Составное имя» + «Tool» - наборы констант «Составное имя» + «Const» Если модуль является переводом заголовочного файла C/C++, то паскалевский эквивалент должен иметь идентичное имя и расширение «.pas». При создании новых модулей необходимо, по возможности, придерживаться правила: один модуль — один класс, не использовать русских наименований каталогов проектов. Пример: • PresistConnection.pas; • StrArray.pas; • MainFormUnit.pas; • AboutFormUnit.pas.
«Имя функции» ==: • Префикс «Is» + «Составное имя» — для функций, возвращающих булево значение; • «Составное имя» — для функций—команд; • Префикс «Get» + «Составное имя» — для остальных функций; «Имя процедуры» == «Составное имя»; «Приватные методы класса» == префикс «h_» + имя метода; «Статические методы модуля» == префикс «s_» + имя метода; Под именем метода подразумевается «Имя функции» или «Имя процедуры». Пример: • IsDone (функция возвращает true/false); • GetCurrentDate (функция возвращает дату). • OpenSQL (функция-команда возвращает курсор) • h_GetOptions (приватная функция класса)
16.1. Использование модификатора «Var» в объявлении параметров процедур должно быть исключено. В объявлении параметров функций допускается использование данного модификатора, при условии, что иная реализация невозможна. 16.2. Строковые параметры методов должны объявляться только с модификатором «Const» или «Var». Пример: • Function FindItem(Const sItemName: string; Var iFoundIndex: Integer): Boolean;
17.1. Ключевые слова «then», «do» должны находиться на той же строке, что и условное выражение. Текст кода, следующий за данными ключевыми словами, должен располагаться на следующей строке и быть смещен на один символ табуляции:
If 1<>1 then
exit;
While ii< 100 do
Inc(ii);
17.2. Оформление блока.
Открывающее блок слово «begin» может находится:
- На той же строке, что и условный выражение;
- На следующей строке, на уровне (по левому краю) условного выражения.
Текст кода внутри блока должен быть смещен на один символ табуляции.
Табуляция устанавливается фиксированным значением 2 (Tools-Editor Options-Source Options-Tab stops = 2)
Закрывающее блок слово «end» всегда должно быть на новой строке на уровне (по левому краю) условного выражения.
Начало обратной конструкции else должно находиться на одном уровне (по левому краю) с началом условного блока if. Все ветвления условного блока оформляются на одном уровне:
if <Условие1> then begin
;
end else if <Условие2> then
;
else if <Условие3> then
;
else
;
17.3. Не использовать сложные, вложенные условия. Где это возможно использовать код в виде заглушек:
if <Условие1> then
exit;
if <Условие2> then
exit;
17.4. Все операторы языка в коде программы должны быть оформлены с обоих сторон пробелами.
17.5. Оператор ‘=’ в блоке объявления констант и символ ‘:’ (двоеточие) в блоке объявления переменных и констант допускается оформлять несколькими пробелами с обоих сторон для выравнивания на одном уровне.
17.6. В блоке объявления переменных и констант, двоеточие может следовать сразу за именем переменной.
17.7. Символы ‘;’ (точка с запятой) и ‘,’ (запятая) всегда «приклеены» к слову находящемуся слева и отделены одним пробелом от слова находящегося справа. Не допускается оформлять эти символы пробелами с двух сторон.
18.1. Все постоянные величины должны быть, перед их использованием в тексте программного кода, предварительно оформлены в виде значений констант. 18.2. Запрещается: - Использование конструкции с ключевым словом «with»; - Наличие в программах неиспользуемых идентификаторов. Неиспользуемые идентификаторы появляются, как правило, после модификаций в программах. Происходят изменения в секции реализации, но не делаются соответствующие изменения в секции определений. - Использование одного идентификатора для разных целей. Изначально идентификатор создается для определенной цели, но затем, после выполнения этой цели, он используется для других целей. - Наличие в программах закомментированного кода.
Внесение изменений в уже используемый, общий код необходимо фиксировать новым правилом. Правило имеет следующую структуру: префикс «CORRECTION_» + дата в формате (yyyymmdd) + “_” + псевдоним программиста + “_” + «Имя Константы» отражающее смыл изменений. Пример: {$define CORRECTION_20050408_DIN_MENUBUG} Блок изменений оформляется: {$ifdef CORRECTION_20050408_DIN_MENUBUG} измененный вариант кода; {$else} Исходный вариант кода; {$endif} Устоявшиеся и отработанные правила подлежат утверждению и внесению в состав модуля только измененного варианта с полным удалением исходного.
Синтаксическое оформление комментариев: - Однострочный комментарий == // Комментарий - Многострочный комментарий == {: Комментарий } Все программные модули должны быть иметь заголовок следующего содержания: - Общее описание модуля; - Дату написания модуля; - Автор; - TODO (памятка, что необходимо сделать, рекомендации); - Историю изменений (дата, автор, причина/назначение); Все вспомогательные классы и их члены, переменные и функции модулей общего назначения должны предваряться группой однострочных комментариев с описанием их назначения.
© AIKernel 2007-2011
12.03.2007 - 30.04.2011