В этой статье:

Общие сведения

Описание

Принципы именования

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

Отступы

Пробелы

Пустые строки

Прочее

Пример

Порядок оформления кода

Номер статьи: KB000005

Общие сведения

Связанные блоки:

Описание

Ниже приводится описание рекомендуемого порядка оформления исходного кода прикладных систем в «Форсайт. Аналитическая платформа». Стиль кодирования автоматически поддерживается редактором среды разработки при включенной опции «Использовать автоформатирование кода» в настройках среды разработки.

Принципы именования

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

Для форматирования кода должны использоваться символы табуляции и пробела. Символ табуляции должен использоваться для оформления отступов, а символ пробела - для разделения лексем в коде.

Отступы

Отступы (в виде одного символа табуляции) должны использоваться в следующих случаях:

Var
    I: Integer;

Function Calculate(FirstParameter,
    SecondParameter: Integer; Var ThirdParameter: Integer);
    
ThirdParameter := FirstParameter +
    SecondParameter * FirstParameter;

Function ConvertValue(Value: Variant): Integer;
Begin
    Alfa := 1;
End;

Class ConfirmForm: Form;
    OkButton: Button;
End Class;

Enum Colors;
    Red,
    Green,
    Blue
End Enum Colors;

Select Case Value
    Case 0:
        Alfa := 1;
        Beta := 2;
    Else
        Gamma := 3;
End Select;

If Value = 0 Then
    Alfa := 1;
Else
    Beta := 2;
End If;

For I := 0 To Count - 1 Do
    Alfa := 1;
End For

For Each V In List Do
    Debug.WriteLine(V);
End For;

While I < Count Do
    Alfa := 1;
End While

Repeat
    Alfa := 1;
    I := I + 1;
Until I = Count;

Try
    Alfa := 1;
Except
    Beta := 2;
Finally
    Gamma := 3;
End Try;

Во всех остальных случаях использование отступов не допустимо.

Пробелы

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

Пробелы должны использоваться для разделения лексем в следующих случаях:

Пробелы не должны использоваться для разделения лексем в следующих случаях:

Пустые строки

Пустая строка должна использоваться в следующих случаях:

Прочее

Операторы, относящиеся к одной конструкции языка (BeginEnd, RepeatUntil, TryExceptFinallyEnd Try, SelectEnd Select, и др.) должны находиться в одной позиции в строке (в одной колонке).

Пример

Enum WhatICanDo
    GetSomeSleep,
    BrowseInternet,
    PlayFavouriteGame
End Enum WhatICanDo;

// Демонстрационный класс
Class GOODFORMATForm: Form
    PlayGame: Button;
    CancelButton: Button;
    BrowseInet: Button;
    SomeSleep: Button;

    Sub CancelButtonOnClick(Sender: Object);
    Begin
        Self.Close;
    End Sub CancelButtonOnClick;

    Sub Sleep(Millisecs: Integer);
    Var
        J, I: Integer;
    Begin
        I := (Millisecs + 999Div 1000;
        While I > 0 Do
            For J := 0 To 999 Do
                If Millisecs > 0 Then
                    Millisecs := Millisecs - 1;
                Else
                    I := 0;
                    Break;
                End If;
            End For;
            I := I - 1;
        End While;
    End Sub Sleep;

    Sub ShellExecute(Command: String);
    Begin
        Repeat
            Command := Command + " ";
        Until Command.Length > 100;
    End Sub ShellExecute;

    Function CreateProcess(ProcessName: String): Boolean;
    Var
        Result: Boolean;
    Begin
        Result := True;
        Try
            WinApplication.NotImplementedBox;
            Raise New Exception.Create("Данная функция еще не реализована");
        Except
            Result := False;
            WinApplication.InformationBox(
                "Произошла ошибка выполнения в GOODFORMATForm.CreateProcess");
        End Try;
        Return Result;
    End Function CreateProcess;

    Sub HaveFun(Action: WhatICanDo);
    Begin
        Select Case Action
            Case WhatICanDo.GetSomeSleep:
                Sleep(60000 * 30);
            Case WhatICanDo.BrowseInternet:
                ShellExecute("http://www.favouritesite.com");
            Case WhatICanDo.PlayFavouriteGame:
                CreateProcess("C:\Quake3\Quake3.exe");
            Else
                WinApplication.InformationBox("Nothing to do!");
        End Select;
    End Sub HaveFun;

    Sub PlayGameOnClick(Sender: Object);
    Begin
        HaveFun(WhatICanDo.PlayFavouriteGame);
    End Sub PlayGameOnClick;

    Sub BrowseInetOnClick(Sender: Object);
    Begin
        HaveFun(WhatICanDo.BrowseInternet);
    End Sub BrowseInetOnClick;

    Sub SomeSleepOnClick(Sender: Object);
    Begin
        HaveFun(WhatICanDo.GetSomeSleep);
    End Sub SomeSleepOnClick;

End Class GOODFORMATForm;

См. также:

База знаний разработчиков