Как писать красивые и понятные программы.
I. Составление программы

   1. Всякий логически связанный кусок программы следует выделять в отдельную функцию (процедуру).


         Даже если она будет вызываться только один раз.

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


   3. Везде, где возможно заменять выбор (if) присваиванием или возвратом булевой переменной.


   4. Функция не использует ввода и вывода


   5. Нельзя без моего специального благословения пользоваться операторами goto, break, continue.


II. Запись программы
Формальные правила

   1. После запятой всегда ставится пробел.


        X int a,b,c,d;
   v int a, b, c, d;
         

   2. Тщательно соблюдайте отступы (три пробела)


         Не пользуйтесь клавишей табуляции.

   3. Имена констант и только их пишите заглавными буквами.


   4. Описания функций (и процедур) отделяйте двумя пустыми строками


        и строкой из тире:
        //------------------------------------------------
       
         Головную программу следует выделить особо:
       //================ M A I N =====================

   5. Выделяйте части программы или модуля. (описания типов, глобальных констант, переменных и т. п.)


       //****************** TYPES **********************

   6. Ключевое слово управляющей конструкции (if, while, for…) отделяйте


         от последующей скобки пробелом:
          X while(x < SIZE)
         v while (x < SIZE)

   7. Имя функции (процедуры) пишите слитно с последующей скобкой как при описании, так и при вызове:


         X double sqrt (double r) … 1 = -b + sqrt (d);
           v double sqrt(double r) … x1 = -b + sqrt(d);

   8. При написании имен из нескольких слов, используйте для разделения слов знак ‘_’ или заглавные буквы. Придерживайтесь в этом единого стиля.


   9. При выборе имен старайтесь пользоваться английскими словами, если же не получается – можно пользоватся транслитом (primerno tak). Никогда не смешивайте английский и транслит!


  10. Строка программы не должна вылезать за правый край развернутого окна.


  11. Не используйте “магических” чисел. Вместо них объявляйте именованные константы. Исключение может быть сделано лишь для нуля и единицы. Везде, где использование именованных констант неуместно, пользуйтесь комментариями.


         X for (p=287; p!=362; p++)
           v const int OLD_PRICE=287;
           v const int NEW_PRICE=362;
     …
     for(p=OLD_PRICE; p!=NEW_PRICE p++) …
Неформальные правила

   1. Имена должны нести информацию. Выбирайте их тщательно.


   2. Если выбора имени оказывается недостаточно – пользуйтесь комментариями.


   3. Пользуйтесь комментариями также для описания алгоритма и верификации программы (например, записывайте инварианты нетривиальных циклов)


   4. Старайтесь избегать длинных выражений.


   5. Используйте пробелы для выделения структуры выражения (порядка действий). Для длинных выражений это особенно важно.


   6. Выравнивайте куски длинных выражений и операторов, последовательные однородные операторы, данные.


   7. Выделяйте структуру функций и процедур пустыми строками.


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



III. Экран пользователя

   1. Ввод каждого отдельного данного с клавиатуры должен предваряться приглашением.


   2. Приглашение оканчивается знаком ‘>’, поставленным между пробелами


   3. Выходные данные не должны “склеиваться”.


   4. Для вывода данных знак ‘>’ не используется.


         Пользуйтесь двоеточием.

   5. Однородные данные следует структурировть, используя выравнивание и/или пустые строки.




----
адрес оригинала: ((/OnerXaum/Стиль))