Шрифт:
В данной главе мы продемонстрируем ход мыслей профессионального программиста, пытающегося улучшить калькулятор из главы 6. Обратите внимание на то, что вопросы о программе и рассмотренные проблемы намного интереснее, чем сам калькулятор. Мы покажем, как эволюционирует реальная программа под влиянием требований и ограничений и как программист может постепенно улучшить ее.
7.2. Ввод и вывод
В начале главы 6 мы решили, что приглашение пользователю ввести данные должно выглядеть следующим образом:
Кроме того, вывод результатов предварялся словом
Торопясь поскорее запустить программу, мы постоянно забываем об этих деталях. И это совершенно естественно. Мы не можем постоянно думать обо всем сразу, поэтому, когда прекращаем размышлять, обнаруживаем, что нечто забыли.
Иногда первоначальные требования измениться не могут. Как правило, программы, учитывающие такие требования, подчиняются слишком жестким правилам и представляют собой слишком ограниченное решение поставленных задач. Таким образом, целесообразно рассмотреть, что мы можем сделать, предполагая, что можем изменять спецификации, описывающие цели программы. Действительно ли мы хотим, чтобы программа выводила на экран слова Выражение: и Результат:?
На каком основании? Простые размышления тут вряд ли помогут. Мы должны проверить разные варианты и выбрать лучший.
В текущей версии при вычислении выражения
программа выводит следующие результаты:
Если добавить слова
Мы уверены, что кому-то нравится один стиль, а кому-то — другой. В таких ситуациях мы можем предоставить пользователям выбор, но для данной простой задачи это было бы излишне, поэтому мы должны принять волевое решение. По нашему мнению, слова Выражение: и Результат: слишком загромождают экран и сбивают с толку. Из-за них сами выражения и результаты занимают лишь небольшую часть экрана, а ведь именно они являются предметом нашего внимания, поэтому ничто не должно нас отвлекать от них. С другой стороны, если каким-то образом не отделить входную информацию, которую печатает пользователь, и результаты, вычисленные компьютером, получится путаница. Во время первоначальной отладки для индикации результата мы использовали символ =, а для короткого приглашения — символ >, который часто используется для этой цели.
Теперь экран выглядит намного лучше, и мы можем приступать к изменениям основного цикла в функции
К сожалению, результат ввода нескольких выражений в одной строке выглядит запутанно.
Основная проблема заключается в том, что мы не подумали о возможности ввести в одной строке сразу несколько выражений. На самом деле мы подразумевали следующий вариант ввода и вывода:
Это выглядит правильно, но, к сожалению, неясно, как этого добиться. Сначала посмотрим на функцию
Пока можем считать, что текущий вариант достаточно хорош. Если мы будем вынуждены модифицировать поток
7.3. Обработка ошибок
Первое, что необходимо сделать, получив в принципе работающую программу,— попытаться “сломать” ее, т.е. ввести входные данные, надеясь вызвать неправильную работу программы. Мы говорим “надеясь”, потому что основная задача на этом этапе — найти как можно больше ошибок, чтобы исправить их до того, как их обнаружит кто-то другой. Если вы приступите к проверке с убеждением: “Моя программа работает, и я не делаю никаких ошибок!”, то не сможете найти многих ошибок и будете очень огорчены, если все же обнаружите их. Вы должны подвергать сомнению то, что делаете! Правильная позиция формулируется так: “Я “сломаю” ее! Я умнее, чем любая программа, даже моя собственная!” Итак, введем в калькулятор мешанину правильных и неправильных выражений. Рассмотрим пример.
Жанры
- Романы
- Приключения
- Детективы
- Техно триллер
- Дамский детективный роман
- Исторические детективы
- Классические детективы
- Шпионские детективы
- Триллеры
- Юридический триллер
- Крутой детектив
- Полицейские детективы
- Медицинский триллер
- Иронические детективы
- Боевики
- Криминальные детективы
- Политические детективы
- Маньяки
- Зарубежные детективы
- Прочие Детективы
- Спецслужбы
- Драматургия
- Фантастика
- Хентай
- Ранобэ
- Сянься
- Дорама
- Уся
- Аниме
- Космоопера
- Юмористическая фантастика
- Боевая фантастика
- Героическая фантастика
- Технофэнтези
- Готический роман
- Социально-философская фантастика
- Попаданцы
- Историческая фантастика
- Ироническая фантастика
- Зарубежная фантастика
- Историческое фэнтези
- Юмористическое фэнтези
- Детективная фантастика
- Эпическая фантастика
- Мистика
- Космическая фантастика
- Фантастика: прочее
- Постапокалипсис
- Научная фантастика
- Киберпанк
- Альтернативная история
- Ненаучная фантастика
- РПГ
- Стимпанк
- Ироническое фэнтези
- Ужасы и мистика
- Сказочная фантастика
- Фэнтези
- Городское фэнтези
- Эзотерика
- Проза
- Военная проза
- Легкая проза
- Сентиментальная проза
- Советская классическая проза
- Антисоветская литература
- Афоризмы
- Эпистолярная проза
- Новелла
- Семейный роман
- Рассказ
- Классическая проза
- Эпопея
- Эссе
- Проза прочее
- Повесть
- Магический реализм
- Современная проза
- Контркультура
- Роман
- Историческая проза
- Русская классическая проза
- Феерия
- Стихи и поэзия
- Юмор
- Дом и досуг
- Рыбалка
- Охота
- Здоровье детей
- Домашние животные
- Воспитание детей
- Отдых / туризм
- Зарубежная прикладная литература
- Прочее домоводство
- Прикладная литература
- Домашнее хозяйство
- Кулинария
- Медицина и здоровье
- Сделай сам
- Спорт
- Хобби и ремесла
- Образовательная литература
- Сад и Огород
- Здоровье и красота
- Развлечения
- Коллекционирование
- Секс / секс-руководства
- Образование и наука
- Боевые искусства
- Органическая химия
- Обществознание
- Военная история
- Ветеринария
- Ораторское искусство / риторика
- Физика
- Химия
- Семейная психология
- Военная техника и вооружение
- Иностранные языки
- Прочая научная литература
- Психотерапия и консультирование
- Биохимия
- Cпецслужбы
- Астрономия и Космос
- Школьные учебники
- Учебная и научная литература
- Учебники
- Государство и право
- Психология
- Литературоведение
- История
- Научно-популярная литература
- Политика
- Детская психология
- Юриспруденция
- Шпаргалки
- Педагогика
- Физическая химия
- Медицина
- Биофизика
- Языкознание
- Зарубежная образовательная литература
- Зоология
- Геология и география
- Краткое содержание
- Зарубежная психология
- Саморазвитие / личностный рост
- Технические науки
- Религиоведение
- Военное дело
- Личная эффективность
- Аналитическая химия
- Рефераты
- Экология
- Философия
- Альтернативная медицина
- Математика
- Культурология
- Военное дело: прочее
- Ботаника
- Биология
- Словари и Энциклопедии
- Финансы и бизнес
- Отраслевые издания
- Бухучет и аудит
- Недвижимость
- Деловая литература
- Ценные бумаги
- Внешнеэкономическая деятельность
- Торговля
- Зарубежная деловая литература
- О бизнесе популярно
- Стартапы и создание бизнеса
- Корпоративная культура
- Управление, подбор персонала
- Маркетинг, PR, реклама
- Личные финансы
- Работа с клиентами
- Менеджмент
- Интернет-бизнес
- Поиск работы, карьера
- Малый бизнес
- Делопроизводство
- Государственное и муниципальное управление
- Банковское дело
- Экономика
- Книги по IT
- Техника
- Древние книги
- Документальное
- Прочее
- Интерьеры
- Газеты и журналы
- Театр
- Музыка
- Комиксы / манга
- Зарубежная классика
- Современная зарубежная литература
- Изобразительное искусство, фотография
- Мода и стиль
- Искусство и Дизайн
- Зарубежная литература о культуре и искусстве
- Фанфик
- Подростковая литература
- Шахматы
- Кино
- Культура и искусство
- Недописанное
- Классическая литература
- Без Жанра
- Народные
- Книги Для Детей
- Детские остросюжетные
- Сказки
- Детские стихи
- Прочая детская литература
- Детская образовательная литература
- Книги для дошкольников
- Детская фантастика
- Детские детективы
- Книга-игра
- Детский фольклор
- Буквари
- Детская проза
- Детская познавательная и развивающая литература
- Внеклассное чтение
- Зарубежные детские книги
- Детские приключения