Три принципа объектно-ориентированного подхода

Книги, посвященные объектно-ориентированному анализу, проектированию и программированию, нетрудно узнать на полке: их авторы нередко отличаются многословием, а сами книги не радуют нас ценой. А ведь мы обожаем скорость… в том числе — получения и изложения полезной нами информации! За сим — три принципа объектно-ориентированного подхода в «телеграфном» стиле.

  1. Программируйте в соответствии с интерфейсами, а не с реализацией. — Классы-клиенты не должны беспокоиться об используемых идентификаторах классов, которые обслуживают запрос, если им предоставлен ожидаемый абстрактный тип (интерфейс).
  2. Проектируйте системы с учетом будущих изменений. — Задумайтесь, какие нежелательные зависимости (от алгоритмов, платформы, способов выполнения операций) могут проявиться в продукте в ближайший год, два или три, а каких структурных качеств (гибкости, масштабируемости, переносимости) может, наоборот, не хватить. Не занимайтесь «ясновидением» на десятилетия вперед, но и не позволяйте системе рухнуть под тяжестью перепроектирования через полгода после сдачи в эксплуатацию.
  3. Предпочитайте композицию (агрегацию) объектов наследованию классов. — Отдайте должное опыту и таланту авторов, по чьим книгам вы изучали свой первый ОО-язык, и «забудьте то, чему вас учили в школе». Ценность наследования — не в том, что оно стоит в одном ряду с инкапсуляцией и полиморфизмом, а в простоте реализации и малом количестве экземпляров объектов, с которыми вы имеете дело как разработчик. Плата за это — высокая зависимость от реализации, компрометация защищенных членов базовых классов, невозможность динамической замены реализации и конфигурирования системы, невысокая гибкость и недостаточная возможность повторного использования кода. Не многовато ли «против», чтобы быть всегда «за»?

Добавить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.