Программирование. Принципы и практика использования C++ Исправленное издание, стр. 99
7.6.4. Комментарии
При разработке кода мы включили в него несколько комментариев. Хорошие комментарии — важная часть программирования. В рабочей суматохе мы часто забываем об этом. Момент, когда мы возвращаемся к коду для приведения его в порядок, лучше всего подходит для проверки следующих свойств комментариев.
1. Корректность (вы могли изменить код, оставив старый комментарий).
2. Адекватность (редкое качество).
3. Немногословность (чтобы не отпугнуть читателя).
x = b+c; // складываем переменные b и c и присваиваем результат // переменной xТакие комментарии часто можно встретить в учебниках, но они нужны лишь для того, чтобы объяснить свойства языка, которые еще не известны читателям. Комментарии нужны для того, чтобы объяснять то, что сложно выразить средствами языка программирования. Примером такой ситуации является выражение намерения программиста: код означает лишь то, что программа делает на самом деле, но он ничего не может сказать читателю о действительных намерениях программиста (см. раздел 5.9.1). Посмотрите на код программы калькулятора. В нем кое-чего не хватает: функции описывают, как мы обрабатываем выражения и лексемы, но ничего не сказано (помимо самого кода) о том, что именно мы считаем выражением и лексемой. Лучше всего поместить такие комментарии в грамматике.
/*Простой калькуляторИстория версий:Переработан Бьярне Страуструпом в мае 2007 г.Переработан Бьярне Страуструпом в августе 2006 г.Переработан Бьярне Страуструпом в августе 2004 г.Разработан Бьярне Страуструпом ( [email protected]) весной 2004 г.Эта программа реализует основные выражения калькулятора.Ввод из потока с in; вывод в поток cout.Грамматика для ввода:Инструкция: Выражение Печать ВыходПечать: ;Выход: qВыражение: Терм Выражение + Терм Выражение – ТермТерм: Первичное выражение Терм * Первичное выражениеТерм / Первичное выражение Терм % Первичное выражениеПервичное выражение: Число (Выражение) – Первичное выражение + Первичное выражениеЧисло: литерал_с_плавающей_точкойВвод из потока cin через поток Token_stream с именем ts.*/Здесь мы использовали блок комментариев, который начинается символами
/**/calculate()7.7. Исправление ошибок
Почему мы прекращаем работу программы, когда находим ошибку? В свое время это казалось простым и очевидным решением, но почему? Почему бы не вывести сообщение об ошибке и продолжить работу? Помимо всего прочего, мы часто делаем опечатки, и такие ошибки не означают, что мы решили не выполнять вычисления. Итак, попробуем исправить ошибки. Это по существу значит, что мы должны перехватить исключение и продолжить работу после исправления ошибки.
До сих пор все ошибки представлялись в виде исключений и обрабатывались функцией
main()calculate()void calculate(){ while (cin) try { cout << prompt; Token t = ts.get(); while (t.kind == print) t=ts.get(); // сначала // игнорируем все // инструкции "печать" if (t.kind == quit) return; ts.putback(t); cout << result << expression() << endl;