Настолько страшная, что нужно какие-то правила и ограничения для себя выдумывать:
Классы большей частью используются, как модули.
Наследование большей частью одноуровневое. Варианты разбираются через variable as Class.
Виртуальные функции и другие типы наследования и использования классов используются редко. Виртуальные функции они скрывают логику и плохо расширяются (см. expression problem). Наследование глубиной больше 1 тоже скрывает логику и его трудно сделать правильно.
Объекты классифицируются на неизменяемые и IORef-like. Неизменяемые всегда пересоздаются вместо изменений, IORef-like переписывают свое содержимое заново созданными значениями.
Последнее позволяет создавать коллекции, которые можно итерировать, не опасаясь вносить в них изменения.
Иначе, видимо, такая херня выходит... :)
Я, наверное, уже слишком старый и слишком больной на голову человек. Но, думается, лучше всего ООП вообще и использование ООП для проектирования ПО в частности, было описано всего в двух книгах. У Бьерна Страуструпа в его "Язык программирования C++" (если не ошибаюсь, начиная со второго издания там есть несколько глав, посвященных проектированию ПО, в третьем специальном издании они были точно и это было чуть ли не лучшее, что я читал по проектированию с применением ООП). И у Бертранда Мейера в "Объектно-ориентированное конструирование программных систем" (хотя там чуть ли не сразу идет проецирование материала на Eiffel).
Все остальное -- будь то хоть Гради Буч, хоть Алан Кей, хоть еще кто угодно -- все это фигня и пространное изложение богатства внутреннего мира автора.
Комментариев нет:
Отправить комментарий