Заветы Кернигана и Плоджера.

Б.Керниган, Ф.Плоджер "Элементы стиля программирования"

Пишите программы просто - не делайти их слишком хитроумными.
Говорите, что Вы имеете в виду, просто и прямо.
Пользуйтесь библиотечными функциями.
Избегайте промежуточных переменных.
Пишите понятно - не приностите ясность в жертву эффективности.
Пусть ЭВМ выполняет черновую работу.
Заменяйте повторяющиеся выражения обращениями к функциям.
Скобки исключают двусмысленность.
Выбирайте имена переменных так, чтобы они не приводили к путанице.
Избегайте использовать фортрановский арифметический оператор IF.
Избегайте ненужных ветвлений.
Используйте хорошие средства языка и не используйте плохие.
Не используйте условные переходы в качестве замены логических выражений.
Используйте "телефонный тест" для проверки читабельности текста.

Используйте оператор DO-END и сдвиг строк для разделения группы операторов.
Используйте форму IF-ELSE, чтобы подчеркнуть необходимость выполнения только одного из двух действий.
Пользуйтесь конструкциями DO и DO-WHILE, чтобы подчеркнуть наличие циклов.
Делайте программы читаемыми сверху вниз.
Используйте IF...ELSE IF...ELSE IF...ELSE... для релизации ветвления по нескольким направлениям.
Пользуйтесь основными конструкциями потока управления.
Сначала пишите программу на простом псевлоязыке, затем переводите ее на используемый язык.
Избегайте конструкций THEN-IF и пустого предложения ELSE.
Избегайте введения операторов ELSE GOTO и ELSE RETURN.
За каждым принятием решения, как можно ближе к нему, должно следовать соответствующее ему действие.
Используйте массивы данных, чтобы избежать повторяющихся управляющих последовательностей.
Выбирайте такое представление данных, которое упрощает программу.
Не останавливайтесь на первом варианте.

Разбивайте программу на модули. Используйте подпрограммы.
Делайте наглядными связи между модулями.
Каждый модуль должен выполнять одну функцию, но хорошо.
Убедитесь в том, что в каждом модуле что-либо локализовано.
Пусть данные определяют структуру программы.
Не исправляйте плохую программу - лучше перепишите ее.
Пишите и тестируйте программу небольшими частями.
Для структур данных, определяемых рекурсивно, используйте рекурсивные процедуры.

Проверяйте вводимые данные на обоснованность и правдоподобие.
Убедитесь в том, что при вводе не будут нарушены ограничения программы.
Окончание ввода определяйте по концу файла и указателю конца, а не подсчитывая перфокарты.
Выявляйте ошибки при вводе, после чего по возможности продолжайте процесс ввода.
Выполняйте проверку на окончание файла единым способом.
Организуйте ввод данных удобным способом и вывод, не требующий разъяснений.
Используйте универсальные форматы при вводе данных.
Вводимая информация должна быть простой для контроля считывания.
По возможности используйте свободный формат ввода.
Используйте самоопределяющийся ввод. Допускайте пропуск параметров.
И то, и другое должно находить отражение при выводе.
Ввод и вывод выделяйте в подпрограммы.

Перед использованием программы убедитесь в том, что всем переменным присвоены начальные занчения.
Не останавливайтесь на одной найденной ошибке.
Используйте отладочные трансляторы.
Начальные значения константам задавайте с помощью оператора DATA или атрибута INSTALL, а переменным - иполнимым оператором.
Будьте внимательны к ошибкам типа "невпопад".
Будьте внимательны с выбором правильного прехода при равенстве.
Избегайте нескольких выходов из цикла.
Удостоверьтесь, что в программе "ничегонеделание" производится элегантно.
Проверяйте программы по их граничным значениям.
Защищайте программы.
10.0 раз по 0.1 едва ли будет равно 1.0.
Не сравнивайте между собой числа с плавающей запятой для проверки их равенства.

Исправляйте программу, прежде чем повышать ее быстродействие.
Увеличивая скорость выполнения программы, сохраните ее правильной.
Сделайте программу ясной, прежде чем Вы начнете уменьшать время ее прогона.
Не стоит жертвовать ясностью ради небольших выгод в "эффективности".
Пусть транслятор, которым Вы пользуетесь, выполняет элементарную оптимизацию.
Не стремитесь повторно использовать одини тот же оператор, лучше реорганизуйте программу.
Удостоверьтесь в том, что особый случай есть действительно особый.
Сохраните программу простой, чтобы сделать ее быстродействующей.
Не тратьте время на то, чтобы повысить быстродействие программы, - найдите лучший алгоритм.
Оснащайте программы. Проводите измерения, прежде чем вносить эффективные изменения.

Убедитесь в том, что текст программы и комментарии согласуются.
Комментарии не должны быть просто отголоском программы - они должны нести определенную смысловую нагрузку.
Не комментируйте неправильную программу - переделайте ее.
Используйте имена переменных, несущие смысловую нагрузку.
Используйте метки операторов, имеющие смысловое значение.
Форматизируйте текст программы, чтобы в ней быдо проще разобраться.
Сдвигайте строки так, чтобы выделить логическую структуру программы.
Документируйте размещение данных.
Не нужно слишком много комментариев.