- Отступы
Для организации отступов используйте по 2 пробела для каждого уровня.
Не рекомендуется использовать символы табуляции, т.к. пользователи могут по-разному установить параметры табуляции и реальная ширина отступов будет различной.
- Ширина поля
Устанавливайте ширину поля равной 80 символам.
Исходный текст должен укладываться в указанную длину строки - за исключением ситуаций, когда необходимо загончить слово.
Если инструкция занимает несколько строк, то продолжение на последующих строках оформляется с помощью отступа, равного двум символам.
- Блок begin...end
Инструкция begin занимает отдельную строку. Исключение - когда begin оказывается частью предложения else. Т.е. else begin можно записывать в одной строке.
Инструкция end занимает отдельную строку. Если инструкция begin не является частью предложения else, то соответствующая ей end занимает тот же отступ, что и begin.
- Круглые скобки
Между открывающей скобкой и следующим символом не должно быть пробела, как и между закрывающей круглой скобкой и предыдущим символом.
Например:
MyProc( Param1 ); // неверно
MyProc(Param1); // верно
Не следует использовать круглые скобки без необходимости:
if (I = 1) then ... // Неверно - лишние скобки
if (I = 1) or (J = 2) then ... // Верно - скобки необходимы
- Ключевые слова
Зарезервированные ключевые слова должны записываться строчными буквами:
BEGIN Begin // неверно
begin // верно
- Присвоение имен
Имена подпрограмм должны начинаться с прописной буквы. С прописных букв следует начинать составные части имен:
procedure badprocedurename; // неверно
procedure GoodProcedureName; // верно
Идентификаторам, процедурам, функциям и параметрам процедур и функций следует присваивать имена, отражающие их назначение:
procedure FormatHardDrive; // процедура форматирования винта :)
var IsNull: Boolean; // признак нуля
Переменным управления циклом можно присваивать односимвольные имена Например I, J, K.
Названия типов, которые являются зарезервированными словами, должны быть полностью написаны строчными буквами.
Типы Win API полностью пишутся прописными буквами. Другие имена типов должны начинаться с прописной буквы, кроме того, с прописной буквы должны начинаться составные части имен. Пример:
var
MyString: string;
WindowHandle: HWND;
I: Integer;
Имена перечислимых типов следует выбирать в соответствии с назначением перечисления.
Имя типа должно начинаться с буквы T, подсказывающей пользователю, что идентификатор является типом. Список идентификаторов перечислимого типа должен содержать набранный строчными буквами двух- или трехсимвольный префикс, указывающий на имя перечислимого типа.
TSongType = (stRock, stClassic, stPop, stAlternative);
Если объявляется указатель на к.л. тип, то его имя следует начинать с буквы P. Располагать объявления таких типов нужно по возможности непосредственно перед объявлением указываемого типа:
type
PMyRec = ^TMyRec
TMyRec = record
StringField: string;
IntField: Integer;
end;
- Параметры
Формальные параметры одного и того же типа следует по возможности объединять в одну инструкцию:
procedure MyProc(Param1, Param2: Integer; Param3, Param4: string);
Порядок следования параметров имеет важное значение, если используется соглашение о вызове fastcall. Параметры, используемые часто, должны следовать в начале списка, редко используемые – в конце. Более общие параметры следует размещать перед параметрами узкого назначения в порядке слева направо. Если значения параметров не модифицируются подпрограммой, то их следует помечать зарезервированным словом const. При этом, в случае если тип параметра запись, строка (ShortString), массив или интерфейс, будет сгенерирован более оптимальный код. Если параметр предназначен ТОЛЬКО для передачи значения из подпрограммы, то его следует помечать зарезервированным словом out.
При использовании двух модулей, содержащих подпрограммы с одинаковым именем, всегда предваряйте вызовы таких подпрограмм именем соответстующего модуля:
SysUtils.FindClose(SR);
// или
Windows.FindClose(Handle);
- Типы
Тип Real использовать не рекомендуется, т.к. он оставлен лишь для обратной совместимости. Для работы с данными в формате с плавающей точкой лучше использовать тип Double. Этот тип является форматом данных, определенным стандартом IEEE для представления чисел с плавающей точкой. Тип Exteneded следует использовать только в тех случаях, когда точности предоставляемой типом Double, недостаточно.
Типы данных Variant и OleVariant рекомендуется использовать только для COM-ориентированных задач.
- Использование библиотек
Разрешается пользоваться всеми модулями, входящими в комплект поставки Delphi.
Библиотеками сторонних производителей пользоваться не рекомендуется.
- Компиляция
Исходные тексты подпрограмм ДОЛЖНЫ компилироваться без ошибок, предупреждений и подсказок компилятора!
Следует по возможности избегать переключения опций компилятора (как то: контроль границ диапазонов, контроль ошибок ввода/вывода) в исходном тексте ваших подпрограмм.
Разрешается использовать директивы условной компиляции для предопределенных символов: VER130, WIN32, CPU386, CONSOLE и т.п.