Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Имеет ли смысл делать классы-обертки? врапперы над низкоуровневыми примитивами 
:(
    Опции темы
LeonidPr
Дата 25.6.2019, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Всем привет, задумался над таким вопросом: во многих проектах разработчики делают обертки над различными 
низкоуровневыми понятиями для обеспечения кросплатформенности и универсальности.
Т.е. в проекте есть что-то вроде MyMutexImplMySemaphoreImpl, MyThreadImpl и т.п.
При этом может подтягиваться соответствующая имплементация в зависимости от платформы, на которой идет сборка (Pimpl в помощь)
Так вот в последних стандартах C++ многие вещи подтянули в стандартную библиотеку (<atomic><mutex><thread>) и т.д.
Возник вопрос - стоит ли делать в новых проектах обертки над такого рода STL классами?
С одной стороны вижу смысл в этом в целях обеспечения универсальности, т.к. не все есть в STL, что-то будет браться из других библиотек, или вообще писаться непосредственно через API платформы.
И дабы в дальнейшем не думать какой примитив использовать - свой или из STL стоит сделать низкоуровневый слой с универсальным интерфейсом и стандартизированными (в рамках проекта) названиями для классов.
С другой стороны - есть же здравый предел, не делать же обертки для STL контейнеров или других стандартных типов.
Интересно послушать мнение других по этому вопросу.
--------------------
pkunzip.zip
PM MAIL   Вверх
LeonidPr
Дата 25.6.2019, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Модераторы, удалите плиз одну тему.
У меня вылезла ошибка при создании Bad gateway. когда обновил страницу оказалось, что тема уже создалась, а я послав еще раз создал копию.
P.S. Кстати часто появляется именно на Vingrad-е. Замечаю, не я один копии штампую.

Это сообщение отредактировал(а) LeonidPr - 25.6.2019, 13:47
--------------------
pkunzip.zip
PM MAIL   Вверх
xvr
Дата 25.6.2019, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(LeonidPr @  25.6.2019,  11:45 Найти цитируемый пост)
Возник вопрос - стоит ли делать в новых проектах обертки над такого рода STL классами?

Нет

Цитата(LeonidPr @  25.6.2019,  11:45 Найти цитируемый пост)
С одной стороны вижу смысл в этом в целях обеспечения универсальности, т.к. не все есть в STL, что-то будет браться из других библиотек, или вообще писаться непосредственно через API платформы.

STL де факто (и уже де юро) является частью компилятора (точнее среду, в которую входит компилятор и его run time библиотеки). Вы же не пишете свои обвертки над стандартными библиотеками компилятора (да и над примитивами самого компилятора)? Почему STL должна быть исключением?

Единственный случай, когда это оправдано, если ваша программа должна собираться для разных стандартов C++ (и как следствие STL), тогда конструкции, отсуствующие в младших версиях, можно обвернуть в свои прослойки (но лучше не поддерживать разные версии С++ вообще)

PM MAIL   Вверх
LeonidPr
Дата 25.6.2019, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Цитата(xvr @  25.6.2019,  13:47 Найти цитируемый пост)
Почему STL должна быть исключением?

Вот и задумался должна или нет.
Почему задумался - потому, что не все же есть в STL.
Имеется в виду, что часть задач решается с помощью STL, часть с помощью других либ, или самописных средств.
Для примера в STL есть мьютекс, но нет семафора, ага он есть в boost, плюс там есть еще куча всего.
Т.е. задачи одного класса (синхронизация в данном случае) решается по-разному. у STL свой интерфейс, у boost свой.
тут и возникает желание создать систему классов для синхронизации, стандартную в рамках своего проекта.

Цитата(xvr @  25.6.2019,  13:47 Найти цитируемый пост)
Вы же не пишете свои обвертки над стандартными библиотеками компилятора

Ну как я и говорил, должен быть здравый предел

Это сообщение отредактировал(а) LeonidPr - 25.6.2019, 14:19
--------------------
pkunzip.zip
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1057 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.