Мельница данных- Стилевое оформление исходного кода  (раздел целиком)  (28.03.2024)
Стилевое оформление исходного кода

Код на языке PascalScript, являющийся частью поставляемого решения, должен быть оформлен в соответствии с изложенными правилами.


1. Использование строк, пробелов и отступов

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

Пробелы, запрещенные к использованию:

  • До или после точки "."
  • Между именем вызываемого метода и открывающей скобкой "("
  • После открывающей скобки "(" или перед закрывающей ")"
  • Перед точкой с запятой ";"
  • Перед двоеточием ":"
  • Перед запятой ","

Двоеточие для всех объявлений переменных не должно содержать перед собой пробелов и иметь один пробел после перед именем типа.

Всегда необходимо использовать два пробела для всех уровней отступа. Другими словами, первый уровень отступает на два пробела, второй на четыре и так далее. Никогда не используйте символы табуляции.

Существует несколько исключений из этого правила. Зарезервированные слова var, begin и end, относящиеся к программному блоку вцелом, всегда должны примыкать к левой границе. Код внутри блока begin..end должен иметь отступ два символа.

Все строки должны быть ограничены 80 столбцами. Строки, длиннее чем 80 столбцов должны быть разделены и перенесены. Все перенесенные строки должны быть выровнены по первой строке и иметь отступ в два символа. Зарезервированное слово begin всегда должно находиться на своей отдельной строке.

Нельзя переносить строки в тех местах, где не допускаются пробелы, например между именем метода и открывающей скобкой. Никогда нельзя помещать зарезервированное слово begin на строку, содержащую другой код.


2. Оформление объявлений и операторов

Все переменные с их типами должны быть объявлены на различных строках.

Простые операторы содержат одну точку с запятой. Если Вам необходимо разделить оператор, то перенесите продолжение оператора на следующую строку с отступом в два пробела.
Пример
  MyValue :=
    MyValue + (SomeVeryLongStatement / OtherLongStatement);

Составные операторы всегда заканчиваются точкой с запятой.
Пример
1begin
2  MyStatement;
3  MyNext Statement;
4  MyLastStatement;
end;

Каждое присвоение и каждое выражение должно располагаться на разных строках.

Оператор "if"

Оператор if всегда должен располагаться по крайней мере на двух строках
Неправильно
if A < B then DoSomething; 
Правильно
if A < B then
  DoSomething;
В случае составного оператора необходимо поместить каждый оператор на новую строку.
Неправильно
1  if A < B then begin
2    DoSomething;
3    DoSomethingElse;
4  end else begin
5    DoThis;
6    DoThat;
7  end;
Правильно
1  if A < B then
2  begin
3    DoSomething;
4    DoSomethingElse;
5  end
6  else
7  begin
8    DoThis;
9    DoThat;
  end;
Все остальные варианты расположения операторов не рекомендуются и не одобряются, хотя и являются синтаксически правильными.

Оператор "for"

Неправильно
1  for i := 0 to 10 do begin
2    DoSomething;
3    DoSomethingElse;
4  end;
Правильно
1  for i := 0 to 10 do
2  begin
3    DoSomething;
4    DoSomethingElse;
5  end;
6
7  for I := 0 to 10 do
8    DoSomething;

Оператор "while"

Неправильно
1  while x < j  do begin
2    DoSomething;
3    DoSomethingElse;
  end;
Правильно
1  while x < j do
2  begin
3    DoSomething;
4    DoSomethingElse;
5  end;
6
7  while x < j do
8    Something;

Оператор "repeat..until"

Правильно
1  repeat
2    x := j;
3    j := UpdateValue;
4  until j > 25;

Оператор "case"

Несмотря на то, что существует множество синтаксически правильных конструкций, одобренной и рекомендованной считается следующая:
Правильно
01  case LCode of
02    1, 3:
03      begin
04        Incr := FIncrement + 1;
05        FinalIncr := FIncrement div FLineDiv;
06        Count := FLineDiv;
07      end;
08    2, 4:
09      begin
10        Incr := FPageIncrement;
11        FinalIncr := Incr + 1;
12        Incr := Incr div FPageDiv;
13        Count := FPageDiv;
14      end;
15  else
16    begin
17      Count := 0;
18      Incr := 0;
19      FinalIncr := 0;
20    end;
  end;

Оператор "try"

Несмотря на то, что существует множество синтаксически правильных конструкций, одобренной и рекомендованной считается следующая:
Правильно
01try
02  try
03    EnumItems(CurrentThreadID, LDisable, 0);
04    Result := TaskList;
05  except
06    EnableItems(TaskList);
07    raise;
08  end;
09finally
10  TaskList := SaveList;
11  TaskActive := SaveActive;
end;