Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Имеет ли смысл делать классы-обертки? |
Автор: LeonidPr 25.6.2019, 11:45 |
Всем привет, задумался над таким вопросом: во многих проектах разработчики делают обертки над различными низкоуровневыми понятиями для обеспечения кросплатформенности и универсальности. Т.е. в проекте есть что-то вроде MyMutexImpl, MySemaphoreImpl, MyThreadImpl и т.п. При этом может подтягиваться соответствующая имплементация в зависимости от платформы, на которой идет сборка (Pimpl в помощь) Так вот в последних стандартах C++ многие вещи подтянули в стандартную библиотеку (<atomic>, <mutex>, <thread>) и т.д. Возник вопрос - стоит ли делать в новых проектах обертки над такого рода STL классами? С одной стороны вижу смысл в этом в целях обеспечения универсальности, т.к. не все есть в STL, что-то будет браться из других библиотек, или вообще писаться непосредственно через API платформы. И дабы в дальнейшем не думать какой примитив использовать - свой или из STL стоит сделать низкоуровневый слой с универсальным интерфейсом и стандартизированными (в рамках проекта) названиями для классов. С другой стороны - есть же здравый предел, не делать же обертки для STL контейнеров или других стандартных типов. Интересно послушать мнение других по этому вопросу. |
Автор: LeonidPr 25.6.2019, 13:45 |
Модераторы, удалите плиз одну тему. У меня вылезла ошибка при создании Bad gateway. когда обновил страницу оказалось, что тема уже создалась, а я послав еще раз создал копию. P.S. Кстати часто появляется именно на Vingrad-е. Замечаю, не я один копии штампую. |
Автор: LeonidPr 25.6.2019, 14:18 | ||
Вот и задумался должна или нет. Почему задумался - потому, что не все же есть в STL. Имеется в виду, что часть задач решается с помощью STL, часть с помощью других либ, или самописных средств. Для примера в STL есть мьютекс, но нет семафора, ага он есть в boost, плюс там есть еще куча всего. Т.е. задачи одного класса (синхронизация в данном случае) решается по-разному. у STL свой интерфейс, у boost свой. тут и возникает желание создать систему классов для синхронизации, стандартную в рамках своего проекта.
Ну как я и говорил, должен быть здравый предел |