Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Cpp_Страуструп.doc
Скачиваний:
16
Добавлен:
03.05.2015
Размер:
3.2 Mб
Скачать

12.5 Свод правил

В этой главе мы коснулись многих тем, но, как правило, избегали

давать настоятельные и конкретные рекомендации по рассматриваемым

вопросам. Это отвечает моему убеждению, что нет "единственно верного

решения". Принципы и приемы следует применять способом, наиболее

подходящим для конкретной задачи. Здесь требуются вкус, опыт и

разум. Тем не менее, можно предложить свод правил, которые

разработчик может использовать в качестве ориентиров, пока не

приобретет достаточно опыта, чтобы выработать лучшие.

Этот свод правил приводится ниже.

Он может служить отправной точкой в процессе выработки

основных направлений проекта конкретной задачи, или же он может

использоваться организацией в качестве проверочного списка. Подчеркну

еще раз, что эти правила не являются универсальными и не могут

заменить собой размышления.

- Нацеливайте пользователя на применение абстракции данных и

объектно-ориентированного программирования.

- Постепенно переходите на новые методы, не спешите.

- Используйте возможности С++ и методы обЪектно-ориентированного

программирования только по мере надобности.

_ Добейтесь соответствия стиля проекта и программы.

- Концентрируйте внимание на проектировании компонента.

_ Используйте классы для представления понятий.

- Используйте общее наследование для представления отношений "есть".

- Используйте принадлежность для представления отношений "имеет".

- Убедитесь, что отношения использования понятны, не образуют

циклов, и что число их минимально.

- Активно ищите общность среди понятий области приложения и

реализации, и возникающие в результате более общие понятия

представляйте как базовые классы.

- Определяйте интерфейс так, чтобы открывать минимальное количество

требуемой информации:

- Используйте, всюду где это можно, частные данные и функции-члены.

- Используйте описания public или protected, чтобы отличить

запросы разработчика производных классов от запросов обычных

пользователей.

- Сведите к минимуму зависимости одного интерфейса от других.

- Поддерживайте строгую типизацию интерфейсов.

- Задавайте интерфейсы в терминах типов из области приложения.

Дополнительные правила можно найти $$11.5.

* Проектирование библиотек

Проект библиотеки - это проект языка,

(фольклор фирмы Bell Laboratories)

... и наоборот.

- А. Кениг

Эта глава содержит описание различных приемов, оказавшихся полезными

при создании библиотек для языка С++. В частности, в ней

рассматриваются конкретные типы, абстрактные типы, узловые классы,

управляющие классы и интерфейсные классы. Помимо этого обсуждаются

понятия обширного интерфейса и структуры области приложения,

использование динамической информации о типах и методы управления

памятью. Внимание акцентируется на том, какими свойствами должны

обладать библиотечные классы, а не на специфике языковых средств,

которые используются для реализации таких классов, и не на

определенных полезных функциях, которые должна предоставлять библиотека.