Читаем Программирование полностью

Такие константы полезны для повышения читабельности программ. Увидев фрагмент кода, вы, конечно, сможете догадаться о том, что константа 3.14159 является приближением числа “пи”, но что вы скажете о числе 299792458? Кроме того, если вас попросят изменить программу так, чтобы число “пи” было записано с точностью до 12 десятичных знаков, то, возможно, вы станете искать в программе число 3.14, но если кто-нибудь неожиданно решил аппроксимировать число “пи” дробью 22/7, то, скорее всего, вы ее не найдете. Намного лучше изменить определение константы pi, указав требуемое количество знаков.

const double pi = 3.14159265359;

  Следовательно, в программах предпочтительнее использовать не литералы (за исключением самых очевидных, таких как 0 и 1). Вместо них следует применять константы с информативными именами. Неочевидные литералы в программе (за рамками определения констант) насмешливо называют “магическими”.

В некоторых местах, например в метках оператора case (см. раздел 4.4.1.3), язык С++ требует использовать константные выражения, т.е. выражения, имеющие целочисленные значения и состоящие исключительно из констант. Рассмотрим пример.

const int max = 17; // литерал является константным выражением

int val = 19;

max+2 // константное выражение (константа плюс литерал)

val+2 // неконстантное выражение: используется переменная

  Кстати, число 299792458 — одна из универсальных констант Вселенной, означающая скорость света в вакууме, измеренную в метрах в секунду. Если вы ее сразу не узнали, то вполне возможно, будете испытывать трудности при распознавании остальных констант в программе. Избегайте “магических” констант!

<p id="AutBody_Root043"><strong>4.3.2. Операторы</strong></p>

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

В выражениях, в которых оператор изменяет операнд, мы использовали имя lval (сокращение фразы “значение, стоящее в левой части оператора присваивания”). Полный список операторов приведен в разделе А.5.

Примеры использования логических операторов && (И), || (ИЛИ) и ! (НЕ) приведены в разделах 5.5.1, 7.7, 7.8.2 и 10.4.

  Обратите внимание на то, что выражение a означает (a, а значение выражения a имеет тип bool, т.е. оно может быть либо true, либо false. Итак, выражение a эквивалентно тому, что выполняется либо неравенство true, либо неравенство false. В частности, выражение a не означает “Лежит ли значение b между значениями a и c?”, как многие наивно (и совершенно неправильно) думают. Таким образом, выражение a в принципе является бесполезным. Не используйте такие выражения с двумя операциями сравнения и настораживайтесь, когда видите их в чужой программе — скорее всего, это ошибка.

Инкрементацию можно выразить по крайней мере тремя способами:

++a

a+=1

a=a+1

Какой из способов следует предпочесть? Почему? Мы полагаем, что лучшим среди них является первый, ++a, поскольку он точнее остальных отражает идею инкрементации. Он показывает, что мы хотим сделать (добавить к значению переменной a единицу и записать результат в переменную). В целом всегда следует выбирать тот способ записи, который точнее выражает вашу идею. Благодаря этому ваша программа станет точнее, а ее читатель быстрее в ней разберется. Если мы запишем a=a+1, то читатель может засомневаться, действительно ли мы хотели увеличить значение переменной a на единицу. Может быть, мы просто сделали опечатку вместо a=b+1, a=a+2 или даже a=a–1; если же в программе будет использован оператор ++a, то простора для сомнений останется намного меньше. Пожалуйста, обратите внимание на то, что этот аргумент относится к области читабельности и корректности программы, но не к ее эффективности. Вопреки распространенному мнению, если переменная a имеет встроенный тип, то современные компиляторы для выражений a=a+1 и ++a, как правило, генерируют совершенно одинаковые коды. Аналогично, мы предпочитаем использовать выражение a *= scale, а не a = a*scale

<p id="AutBody_Root044"><strong>4.3.3. Преобразования</strong></p>
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных