Лекция № 15. Этапы решения задач на ЭВМ. Введение в программирование
Страница 7. Советы по программированию
1.Директивы препроцессора (команды) записываются в отдельной строке.
2.Имена переменных дает программист исходя из их назначения. Имя может состоять только из латинских букв, цифр и знака подчеркивания и должно начинаться не с цифры. От того насколько удачно подобраны имена в программе, зависит её читаемость – одна из важнейших характеристик программы.
3.В общем случае тип переменной выбирается исходя из возможного диапазона значений и требуемой точности представления данных. Например нет необходимости заводить переменную вещественного типа для хранения величины, которая может принимать только целочисленные значения – хотя бы потому, что целочисленные операции выполняются гораздо быстрее.
4.Не забывайте в дружелюбной манере, но без излишнего многословия, пригласить пользователя ввести исходные данные и указать порядок их ввода. В некоторых случаях может понадобиться указать тип величин.
5.Начинающие часто тратят время на поиск ошибки в алгоритме, не удостоверившись, что работают с правильными данными. Рекомендуется для контроля выводить исходные данные сразу же после ввода, чтобы исключить ошибки.
6.Перед запуском программы необходимо иметь тестовые примеры, содержащие исходные данные и ожидаемые результаты. Количество этих примеров зависит от алгоритма.
7.Данные при вводе разделяются пробелами, символами перевода строки или табуляции, но не запятыми!
8.В современной иерархии критериев качества программы на первом месте стоит её надежность, простота поддержки и модификации, а эффективность и компактность выходят на второй план. Поэтому, в общем случае, если нет специальных требований к быстродействию, наиболее наглядный вариант предпочтительней.
9.Для улучшения читаемости программы можно ставить скобки в тех местах, где они не обязательны, - например для визуальной группировки условий.
10.Если по какой-либо ветке условия необходимо выполнить более одного действия, их следует объединить в блок с помощью фигурных скобок.
11.Хотя наличие слова default в конструкции switch и не обязательно, рекомендуется всегда обрабатывать случай, когда значение выражения не совпадает ни с одной из констант. Это облегчает поиск ошибок при отладке программы.
12.Оператор switch предпочтительнее оператора if в тех случаях, если в программе требуется разветвить вычисления на количество направлений, больших двух, и выражение, по значению которого производится переход на ту или иную ветвь, является целочисленным. Часто это справедливо и для двух ветвей, поскольку улучшает наглядность программы.
13.В общем случае надо стремиться к минимизации области видимости переменных.
14.Обнуление памяти при её выделении не происходит.
15.Записывайте операторы инициализации накапливаемых в цикле величин непосредственно перед циклом, в котором они вычисляются.
16.Текстовые файлы очень удобно использовать для отладки программ, требующих ввода хотя бы нескольких величин, - ведь, как правило, программу не удается написать сразу без ошибок, а многократный ввод одних и тех же значений замедляет процесс отладки и может сильно испортить настроение. Кроме того, при подготовке данных в файле до выполнения программы можно спокойно продумать тестовые примеры для исчерпывающей проверки правильности программы.
17.Выход за границы строки и отсутствие нуль-символа являются распространенными причинами ошибок при в программах обработки строк.
18.При вводе текста программы не ленитесь сразу же форматировать его и снабжать комментариями.
19.При заполнении массива из файла обязательно контролируйте выход за границы массива и при необходимости выдавайте предупреждающее сообщение.
20.Все, что передается в функцию и обратно должно отображаться в её заголовке. Это требование не синтаксиса, а хорошего стиля.
21.В определении, в объявлении и при вызове одной и той же функции типы и порядок следования параметров должны совпадать. Для имен параметров никакого соответствия не требуется.
22.Разработка любой функции ведется в том же порядке, что и для всей программы в целом. Сначала определяется интерфейс функции, то есть какие значения подаются ей на вход и что должно получиться в результате. Затем придумываются структуры данных, в которых будут храниться эти и промежуточные значения, затем составляется алгоритм, программа и тестовые примеры.
23.Входные данные функции надо передавать по значению или по константной ссылке, результат её работы – через возвращаемое значение, а при необходимости передачи более одной величины – через параметры по ссылке или указателю.
24.При написании функции нужно предусмотреть все возможные ошибки и обеспечить пользователя функции средствами их диагностики. Печать диагностических сообщений внутри функции нежелательна.
25.Функция может иметь несколько параметров со значениями по умолчанию. Они должны находиться в конце списка параметров.