В этой лекции мы затронули много тем, но как правило не давали настоятельных и конкретных рекомендаций по проектированию. Это соответствует моему убеждению, что нет "единственно верного решения". Принципы и приемы следует применять тем способом, который лучше подходит для конкретных задач. Для этого нужен вкус, опыт и разум. Все-таки можно указать некоторый свод правил, который разработчик может использовать в качестве ориентиров, пока не наберется достаточно опыта, чтобы выработать лучшие. Ниже приведен свод таких правил.
Эти правила можно использовать в качестве отправной точки в процессе выработки основных направлений для проекта или организации или в качестве проверочного списка. Подчеркну еще раз, что они не являются универсальными правилами и не могут заменить размышления.
Узнайте, что вам предстоит создать.
Ставьте определенные и осязаемые цели.
Не пытайтесь с помощью технических приемов решить социальные проблемы.
Рассчитывайте на большой срок
в проектировании, и
управлении людьми.
Используйте существующие системы в качестве моделей, источника вдохновения и отправной точки.
Проектируйте в расчете на изменения:
гибкость,
расширяемость,
переносимость, и
повторное использование.
Документируйте, предлагайте и поддерживайте повторно используемые компоненты.
Поощряйте и вознаграждайте повторное использование
проектов,
библиотек, и
классов.
Сосредоточьтесь на проектировании компоненты.
Используйте классы для представления понятий.
Определяйте интерфейсы так, чтобы сделать открытым минимальный объем информации, требуемой для интерфейса.
Проводите строгую типизацию интерфейсов всегда, когда это возможно.
Используйте в интерфейсах типы из области приложения всегда, когда это возможно.
Многократно исследуйте и уточняйте как проект, так и реализацию.
Используйте лучшие доступные средства для проверки и анализа
проекта, и
реализации.
Экспериментируйте, анализируйте и проводите тестирование на самом раннем возможном этапе.
Стремитесь к простоте, максимальной простоте, но не сверх того.
Не разрастайтесь, не добавляйте возможности "на всякий случай".
Не забывайте об эффективности.
Сохраняйте уровень формализации, соответствующим размеру проекта.
Не забывайте, что разработчики, программисты и даже менеджеры остаются людьми.