|
Материалы книги получены с http://www.itlibitum.ru/
Несколько прощальных слов
Реализация полной схемы обработки транзакций занимает не так уж много места, но от этого она не становится проще. Изменения приходится вносить практически в любой класс, который ссылается на другие классы, поскольку большинство указателей должно соответствовать соглашениям ConstPtr/LockPtr. Впрочем, это не демонстрирует полную безнадежность подобных попыток на С++, а лишь подчеркивает важность соблюдения двух основных принципов:
1. Используйте умные указатели, даже если вы не уверены, что это нужно.
2. Фанатично следите за тем, чтобы константные обращения отделялись от неконстантных.
Если ваш код будет изначально устроен таким образом, подобная расширенная архитектура
реализуется на порядок проще.
В этом кроется один из мистических принципов С++, о которых говорилось выше - вы должны понять не то, как язык справляется с конкретной проблемой, а то, как он обеспечивает построение полноценной, надежной программы. Некоторые инструменты С++, поддерживающие подобную архитектуру, не имеют аналогов в других языках (взять хотя бы конструкторы копий, операторы = и ->). Благодаря этим синтаксическим и семантическим странностям сложные библиотеки классов становятся более понятными и полезными. Только подумайте, насколько бы все усложнилось, если бы мы не могли перегрузить оператор -> в ConstPtr и LockPtr. При правильном выборе идиом С++ не подведет ни на скользкой дороге, ни в плохую погоду.
Наконец, помните о том, что эта глава предназначалась для тренировки творческого воображения - мы хотели узнать, куда нас заведет концепция умного указателя, если применить ее на свежем материале. Ответ: довольно далеко. После добавления некоторых идиом и принципов дизайна, рассмотренных в следующих главах, подобную архитектуру будет легче воплотить в реальной программе.
Назад Содержание Далее
|