Язык программирования C++ от Страуструпа

Замечание для программистов на С


Чем лучше программист знает С, тем труднее будет для него при программировании на С++ отойти от стиля программирования на С.  Так он теряет потенциальные преимущества С++. Поэтому советуем просмотреть раздел "Отличия от С" в справочном руководстве ($$R.18).  Здесь мы только укажем на те места, в которых использование дополнительных возможностей С++ приводит к лучшему решению, чем программирование на чистом С. Макрокоманды практически не нужны в С++: используйте const ($$2.5) или enum ($$2.5.1), чтобы определить поименованные константы; используйте inline ($$4.6.2), чтобы избежать расходов ресурсов, связанных с вызовом функций; используйте шаблоны типа ($$8), чтобы задать семейство функций и типов. Не описывайте переменную, пока она действительно вам не понадобится, а тогда ее можно сразу инициализировать, ведь в С++ описание может появляться в любом месте, где допустим оператор. Не используйте malloc(), эту операцию лучше реализует new ($$3.2.6).  Объединения нужны не столь часто, как в С, поскольку альтернативность в структурах реализуется с помощью производных классов. Старайтесь обойтись без объединений, но если они все-таки нужны, не включайте их в основные интерфейсы; используйте безымянные объединения ($$2.6.2).  Старайтесь не использовать указателей типа void*, арифметических операций с указателями, массивов в стиле С и операций приведения.  Если все-таки вы используете эти конструкции, упрятывайте их достаточно надежно в какую-нибудь функцию или класс.  Укажем, что связывание в стиле С возможно для функции на С++, если она описана со спецификацией extern "C" ($$4.4).

Но гораздо важнее стараться думать о программе как о множестве взаимосвязанных понятий, представляемых классами и объектами, чем представлять ее как сумму структур данных и функций, что-то делающих с этими данными.



Содержание раздела