Работая над программой, программист должен хорошо представлять, что программа, которую он разрабатывает, предназначена, с одной стороны, для пользователя, с другой — для самого программиста. Текст программы нужен прежде всего самому программисту, а также другим людям, совместно с которыми он работает над проектом. Поэтому для того, чтобы работа была эффективной, программа должна быть легко читаемой, ее структура должна соответствовать структуре и алгоритму решаемой задачи. Стиль программирования — это набор правил, которым следует программист в процессе своей работы.
Хороший стиль программирования предполагает:
- использование комментариев;
- использование несущих смысловую нагрузку имен переменных, процедур и функций;
- использование отступов;
- использование пустых строк.
Следование правилам хорошего стиля программирования значительно уменьшает вероятность появления ошибок на этапе набора текста, делает программу легко читаемой, что, в свою очередь, облегчает процессы отладки и внесения изменений.
Четкого критерия оценки степени соответствия программы хорошему стилю программирования не существует. Вместе с тем достаточно одного взгляда, чтобы понять, соответствует программа хорошему стилю или нет.
Структурированное расположение текста
Длина строки
Длина строки не более 80 символов.
Перенос длинных строк
Строку можно переносить после запятой или после оператора, перенесённая линия должна быть сдвинута на символ табуляции либо на уровень начала переносимого выражения.
longMethodCall(expr1, expr2, expr3,
expr4, expr5);res = a * b / (c - d + f) +
4 * z;Пробелы
Пробелы не следует использовать для форматирования отступов в коде (используется Tab). Один пробел ставится после запятой, двоеточия, точки с запятой, с обеих сторон от оператора.
TestMethod(a,_b,_c);
a_:=_b_+_5;
Пустые строки
Одной или несколькими пустыми строками разделяются логические сегменты кода. Например, одной пустой строкой может отделяться инициализация переменных.
"Табличное" форматирование
Часто, особенно при инициализации переменных и полей, имеет смысл пользоваться табличным способом расположения.
name := 'Mr. Green';
myValue := 585;
aTest.Test := Test.TestYou;Количество объявлений и операторов на одной линии
В большинстве случаев желательно придерживаться принципа "одна строка - один экземпляр\оператор".
level: integer; // char level
size: integer; // size of stock
Комментарии
Блочные комментарии
{
Line 1
Line 2
}(*
* Line 1
* Line 2
*)x := {x +} y;
Комментарий "до конца строки"
sum: int64; // сумма ряда
Именование
Форматы именования
Pascal Casing
Каждое логическое слово с заглавной буквы. Например: TestCounterCamel Casing
Первый символ первого логического слова - маленькая буква, остальное как в Pascal Casing. Например: testCounterUpper case
Только заглавные буквы. Используется для именования коротких констант. Например: PI, EЗначимые имена переменных
Название переменной должно соответствовать её назначению (и формату именования).
"Магические" числа
Не следует использовать числовые значения в коде. Вместо этого объявляйте константы с соответствующими значениями.
const PI = 3.14;
var r: integer; // радиус окружности
s: double; // площадь круга
l: double; // периметр круга
begin
...
s := PI * r * r;
l := 2 * PI * r;
...
end.Операторные скобки
begin
...
begin
...
end;
...
end.Оформление некоторых часто используемых конструкций
if (условие) then
begin
...
end;if (условие) then
begin
...
end
else
begin
...
end;for i := 1 to n do
begin
...
end;while (условие) do
begin
...
end;for i := 1 to n - 1 do
begin
...
for j := i + 1 to n do
begin
...
end;
...
end;function Sum(x: integer; y: integer): integer;
begin
result := x + y;
end;
var s: integer; // сумма
x, y: integer;
i: integer;
begin
read(x, y);
s := Sum(x, y);
writeln(s);
randomize;
for i := 1 to s do
begin
for j := 1 to x do
begin
write(random(s), ' ');
end;
writeln;
end;
end.