logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

Глава 2

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

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

  2. Использование операции == для присваивания или операции = для проверки равенства.

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

  1. Неукоснительно соблюдайте правила ступенчатой записи во всех ваших программах, это существенно улучшит их читаемость. Мы советуем делать отступы фиксированного размера примерно 0,5 см или три пробела на отступ.

  2. Псевдокод часто используется при «обдумывании» программ в про­ цессе их разработки. Затем программа на псевдокоде преобразуется в программу на С++.

  3. Записывайте с отступом оба предложения структуры ЕСЛИ-ИНАЧЕ (if/else).

  4. Если есть несколько уровней отступов, каждый уровень должен иметь постоянное число пробелов.

  5. Некоторые программисты предпочитают сначала записать откры­ вающую и закрывающую скобки составного оператора, а уже потом писать внутри их требуемые операторы. Это позволяет избежать пропуска одной или обеих скобок.

  6. Задавайте начальные значения всем счетчикам и переменным сумм.

  7. Когда осуществляется деление на выражение, значение которого может равняться нулю, надо предварительно проверить эту возмож­ ность и обработать ее должным образом (например, напечатать со­ общение об ошибке), не допуская возникновения неисправимой ошибки.

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

  9. Не следует сравнивать числа с плавающей запятой на их равенство или неравенство друг другу. Лучше проверять, не меньше ли их разность некоторой заданной малой величины.

  10. Задание начальных значений переменных одновременно с их объ­ явлением помогает программисту избежать проблем, связанных с неопределенными значениями данных.

Управляющие структуры 155

  1. Унарные операции должны размещаться после их операндов без разделяющего пробела.

  2. Управляйте количеством повторений цикла с помощью целой пере­ менной.

  3. Записывайте с отступом операторы тела каждой управляющей структуры.

  4. Размещайте пустую строку до и после каждой большой управляю­ щей структуры, чтобы она выделялась в программе.

  5. Слишком большая глубина вложенности может сделать программу трудной для понимания. Как правило, старайтесь избегать более трех уровней отступов.

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

  7. Использование конечной величины управляющей переменной в ус­ ловиях структур while и for и использование операции отношения <= поможет избежать ошибок занижения на единицу. Например, для цикла, используемого при печати чисел от 1 до 10 условие продолжения цикла надо записать counter <= 10, а не counter < 10 (что является ошибкой занижения на единицу) или coimter < 11 (что тем не менее корректно).

  8. Помещайте в разделы задания начального значения и изменения переменных структуры for только выражения, относящиеся к уп­ равляющей переменной. Манипуляции с другими переменными должны размещаться или до цикла (если они выполняются только один раз подобно операторам задания начальных значений), или внутри тела цикла (если они должны выполняться в каждом цикле, как, например, операторы инкремента или декремента).

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

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

  11. Ограничивайте, если возможно, размер заголовка управляющей структуры так, чтобы он умещался на одной строке.

  12. Не используйте переменные типов float и double для денежных рас­ четов. Неточность чисел с плавающей запятой может привести к ошибкам, которые проявятся в итоге в неправильной сумме денег. В качестве упражнения попробуйте использовать для денежных рас­ четов целые числа. Заметим: библиотека классов С++ позволяет должным образом осуществлять денежные расчеты.

  13. Вставляйте метку default в оператор switch. Случаи неудачных про­ верок в операторе switch без метки default будут игнорироваться. Включение метки default фиксирует внимание программиста на не-