Мельница данных  (09.12.2024)
Оформление объявлений и операторов

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

Простые операторы содержат одну точку с запятой. Если Вам необходимо разделить оператор, то перенесите продолжение оператора на следующую строку с отступом в два пробела.
Пример
  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;