Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КРАТКИЙ ОБЗОР С.doc
Скачиваний:
1
Добавлен:
26.10.2018
Размер:
2.11 Mб
Скачать

12.5 Свод правил

В этой главе мы коснулись многих тем, но, как правило, избегали давать настоятельные и конкретные рекомендации по рассматриваемым вопросам. Это отвечает моему убеждению, что нет "единственно верного решения". Принципы и приемы следует применять способом, наиболее подходящим для конкретной задачи. Здесь требуются вкус, опыт и разум. Тем не менее, можно предложить свод правил, которые разработчик может использовать в качестве ориентиров, пока не приобретет достаточно опыта, чтобы выработать лучшие. Этот свод правил приводится ниже.       Он может служить отправной точкой в процессе выработки основных направлений проекта конкретной задачи, или же он может использоваться организацией в качестве проверочного списка. Подчеркну еще раз, что эти правила не являются универсальными и не могут заменить собой размышления.       - Нацеливайте пользователя на применение абстракции данных и       объектно-ориентированного программирования.       - Постепенно переходите на новые методы, не спешите.       - Используйте возможности С++ и методы обЪектно-ориентированного       программирования только по мере надобности.       _ Добейтесь соответствия стиля проекта и программы.       - Концентрируйте внимание на проектировании компонента.       _ Используйте классы для представления понятий.       - Используйте общее наследование для представления отношений "есть".       - Используйте принадлежность для представления отношений "имеет".       - Убедитесь, что отношения использования понятны, не образуют       циклов, и что число их минимально.       - Активно ищите общность среди понятий области приложения и       реализации, и возникающие в результате более общие понятия       представляйте как базовые классы.       - Определяйте интерфейс так, чтобы открывать минимальное количество       требуемой информации:       - Используйте, всюду где это можно, частные данные и функции-члены.       - Используйте описания public или protected, чтобы отличить       запросы разработчика производных классов от запросов обычных       пользователей.       - Сведите к минимуму зависимости одного интерфейса от других.       - Поддерживайте строгую типизацию интерфейсов.       - Задавайте интерфейсы в терминах типов из области приложения. Дополнительные правила можно найти $$11.5.

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

      Проект библиотеки - это проект языка,       (фольклор фирмы Bell Laboratories)       ... и наоборот.       - А. Кениг Эта глава содержит описание различных приемов, оказавшихся полезными при создании библиотек для языка С++. В частности, в ней рассматриваются конкретные типы, абстрактные типы, узловые классы, управляющие классы и интерфейсные классы. Помимо этого обсуждаются понятия обширного интерфейса и структуры области приложения, использование динамической информации о типах и методы управления памятью. Внимание акцентируется на том, какими свойствами должны обладать библиотечные классы, а не на специфике языковых средств, которые используются для реализации таких классов, и не на определенных полезных функциях, которые должна предоставлять библиотека.