Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет25/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   21   22   23   24   25   26   27   28   ...   256
Несколько полезных советов 
Ниже представлен "свод правил", который стоит учитывать при изучении С++. Когда вы станете более 
опытными, то на базе этих правил сможете сформулировать свои собственные, которые будут более 
подходить для ваших задач и более соответствовать вашему стилю программирования. Сознательно 
выбраны очень простые правила, и в них опущены подробности. Не следует воспринимать их слишком 
буквально. Хорошая программа требует и ума, и вкуса, и терпения. С первого раза обычно она не 
получается, поэтому экспериментируйте! Итак, свод правил. 
[1] Когда вы пишите программу, то создаете конкретные представления тех понятий, которые 
использовались в решении поставленной задачи. Структура программы должна отражать эти 
понятия настолько явно, насколько это возможно. 
[a] Если вы считаете "нечто" отдельным понятием, то сделайте его классом. 
[b] Если вы считаете "нечто" существующим независимо, то сделайте его объектом 
некоторого класса. 
[c] Если два класса имеют нечто существенное, и оно является для них общим, то выразите 
эту общность с помощью базового класса. 
[d] Если класс является контейнером некоторых объектов, сделайте его шаблонным 
классом. 
[2] Если определяется класс, который не реализует математических объектов вроде матриц или 
комплексных чисел и не является типом низкого уровня наподобие связанного списка, то: 
[а] Не используйте глобальных данных. 
[b] Не используйте глобальных функций (не членов). 
[c] Не используйте общих данных-членов. 
[d] Не используйте функции friend (но только для того, чтобы избежать [а], [b] или [c]). 
[e] Не обращайтесь к данным-членам другого объекта непосредственно. 
[f] Не заводите в классе "поле типа"; используйте виртуальные функции. 
[g] Используйте функции-подстановки только как средство значительной оптимизации. 
Замечание для программистов на С 
Чем лучше программист знает С, тем труднее будет для него при программировании на С++ отойти от 
стиля программирования на С. Так он теряет потенциальные преимущества С++. Поэтому советуем 
просмотреть раздел "Отличия от С" в справочном руководстве ($$R.18). Здесь мы только укажем на те 
места, в которых использование дополнительных возможностей С++ приводит к лучшему решению, чем 
программирование на чистом С. Макрокоманды практически не нужны в С++: используйте const ($$2.5) 


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


Достарыңызбен бөлісу:
1   ...   21   22   23   24   25   26   27   28   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет