|
Модераторы: Daevaorn |
|
LeonidPr |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Всем привет, задумался над таким вопросом: во многих проектах разработчики делают обертки над различными
низкоуровневыми понятиями для обеспечения кросплатформенности и универсальности. Т.е. в проекте есть что-то вроде MyMutexImpl, MySemaphoreImpl, MyThreadImpl и т.п. При этом может подтягиваться соответствующая имплементация в зависимости от платформы, на которой идет сборка (Pimpl в помощь) Так вот в последних стандартах C++ многие вещи подтянули в стандартную библиотеку (<atomic>, <mutex>, <thread>) и т.д. Возник вопрос - стоит ли делать в новых проектах обертки над такого рода STL классами? С одной стороны вижу смысл в этом в целях обеспечения универсальности, т.к. не все есть в STL, что-то будет браться из других библиотек, или вообще писаться непосредственно через API платформы. И дабы в дальнейшем не думать какой примитив использовать - свой или из STL стоит сделать низкоуровневый слой с универсальным интерфейсом и стандартизированными (в рамках проекта) названиями для классов. С другой стороны - есть же здравый предел, не делать же обертки для STL контейнеров или других стандартных типов. Интересно послушать мнение других по этому вопросу. --------------------
pkunzip.zip |
|||
|
||||
LeonidPr |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Модераторы, удалите плиз одну тему.
У меня вылезла ошибка при создании Bad gateway. когда обновил страницу оказалось, что тема уже создалась, а я послав еще раз создал копию. P.S. Кстати часто появляется именно на Vingrad-е. Замечаю, не я один копии штампую. Это сообщение отредактировал(а) LeonidPr - 25.6.2019, 13:47 --------------------
pkunzip.zip |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Нет STL де факто (и уже де юро) является частью компилятора (точнее среду, в которую входит компилятор и его run time библиотеки). Вы же не пишете свои обвертки над стандартными библиотеками компилятора (да и над примитивами самого компилятора)? Почему STL должна быть исключением? Единственный случай, когда это оправдано, если ваша программа должна собираться для разных стандартов C++ (и как следствие STL), тогда конструкции, отсуствующие в младших версиях, можно обвернуть в свои прослойки (но лучше не поддерживать разные версии С++ вообще) |
|||
|
||||
LeonidPr |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Вот и задумался должна или нет. Почему задумался - потому, что не все же есть в STL. Имеется в виду, что часть задач решается с помощью STL, часть с помощью других либ, или самописных средств. Для примера в STL есть мьютекс, но нет семафора, ага он есть в boost, плюс там есть еще куча всего. Т.е. задачи одного класса (синхронизация в данном случае) решается по-разному. у STL свой интерфейс, у boost свой. тут и возникает желание создать систему классов для синхронизации, стандартную в рамках своего проекта.
Ну как я и говорил, должен быть здравый предел Это сообщение отредактировал(а) LeonidPr - 25.6.2019, 14:19 --------------------
pkunzip.zip |
|||
|
||||
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |