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