Приветствую Вас ГостьПятница, 29.03.2024, 09:54

ИНФОРМАТОР


Стиль программирования

Работая над программой, программист должен хорошо представлять, что программа, которую он разрабатывает, предназначена, с одной стороны, для пользователя, с другой — для самого программиста. Текст программы нужен прежде всего самому программисту, а также другим людям, совместно с которыми он работает над проектом. Поэтому для того, чтобы работа была эффективной, программа должна быть легко читаемой, ее структура должна соответствовать структуре и алгоритму решаемой задачи. Стиль программирования — это набор правил, которым следует программист в процессе своей работы.

Хороший стиль программирования предполагает:

  • использование комментариев;
  • использование несущих смысловую нагрузку имен переменных, процедур и функций;
  • использование отступов;
  • использование пустых строк.

Следование правилам хорошего стиля программирования значительно уменьшает вероятность появления ошибок на этапе набора текста, делает программу легко читаемой, что, в свою очередь, облегчает процессы отладки и внесения изменений.

Четкого критерия оценки степени соответствия программы хорошему стилю программирования не существует. Вместе с тем достаточно одного взгляда, чтобы понять, соответствует программа хорошему стилю или нет.

  1. Структурированное расположение текста

    • Длина строки

      Длина строки не более 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

  2. Комментарии

    • Блочные комментарии

      {
         Line 1
         Line 2
      }

      (*
      *  Line 1
      *  Line 2
      *)

      x := {x +} y;

    • Комментарий "до конца строки"

      sum: int64; // сумма ряда

  3. Именование

    • Форматы именования

      Pascal Casing
      Каждое логическое слово с заглавной буквы. Например:
       TestCounter

      Camel Casing
      Первый символ первого логического слова - маленькая буква, остальное как в Pascal Casing. Например: 
      testCounter

      Upper case
      Только заглавные буквы. Используется для именования коротких констант. Например:
       PI, E

    • Значимые имена переменных

      Название переменной должно соответствовать её назначению (и формату именования).

  4. "Магические" числа

    Не следует использовать числовые значения в коде. Вместо этого объявляйте константы с соответствующими значениями.

    const PI = 3.14;
    var r: integer; // радиус окружности 
        s: double; // площадь круга 
        l: double; // периметр круга 
    begin
       ...
       s := PI * r * r;
       l := 2 * PI * r;
       ...
    end.

  5. Операторные скобки

    begin
       ...
       begin
          ...
       end;
       ...
    end
    .

  6.  Оформление некоторых часто используемых конструкций

    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.

Жемчужины мудрости
Календарь
«  Март 2024  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031
Архив записей
Друзья сайта
  • МОУ-СОШ №1 г. Аткарска
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Расчеты on-line
    Бесплатная отправка SMS
  • МЕГАФОН
  • БИЛАЙН
  • Наш опрос
    Какие материалы Вам хотелось бы найти на сайте?
    Всего ответов: 189
    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Банк Интернет-портфолио учителей

    © Ещенко Елена Анатольевна 2010-2011