LINUX.ORG.RU

header only «Good practice»

 


0

4

Ребята может кто в теме есть ли хорошие гидлайны как правильно создавать такие библиотеки. Представим что есть у вас некий код вы его активно использовали в своих проэктах и решили представить общественности в виде удобной, хорошо документированной библиотеки которая бы содержала также header only версию ( к примеру как Catch https://github.com/philsquared/Catch ).

И второй вопрос, для меня более сложный. Что если к примеру приспичело (только не спрашивайте зачем) создать header only версиую уже готовой (зрелой) библиотеки к примеру как hanspell. Есть ли какой нибудь easy way чтобы не инлайнить это все вручную (или оборачивать в классы). Или в любом случае будет куча гемора (рефакторинга) и головной боли. Сильно не пинайте, раньше просто такого никогда не делал. Спасибо заранее всем кто ответил.


создать header only версиую уже готовой (зрелой) библиотеки

Это означает только одну вещь - ты решил эту библиотеку радикально обобщить относительно типов и все функции библиотеки становятся шаблонами или членами шаблонов классов (или и то, и другое сразу).

Begemoth ★★★★★
()
Ответ на: комментарий от trex6

А чем вызвано желание предоставить именно headers-only библиотеку?

Ребята я просил не спрашивать зачем. Хочу чтобы было два варианта, и поэтому интересно как это все реализовать чтобы было удобно поддерживать одновременно в двух видах.

CunMun
() автор топика

Что если к примеру приспичело (только не спрашивайте зачем) создать header only версиую уже готовой (зрелой) библиотеки к примеру как hanspell. Есть ли какой нибудь easy way чтобы не инлайнить это все вручную

ИМХО и быть не может.

emulek
()
Ответ на: комментарий от CunMun

Хочу чтобы было два варианта

это слишком разные варианты. Даже алгоритмы там будут существенно отличаться.

emulek
()
Ответ на: комментарий от emulek

Короче я так понял это будет сплошной геморой, и лучше сразу писать все на шаблонах в stl (boost) стиле, как отметил Begemoth, и не морочить себе голову.

CunMun
() автор топика
Ответ на: комментарий от CunMun

Короче я так понял это будет сплошной геморой, и лучше сразу писать все на шаблонах в stl (boost) стиле

ИМХО да.

emulek
()
Ответ на: комментарий от CunMun

Ребята я просил не спрашивать зачем.

Похоже, что ты и сам не знаешь, зачем тебе это надо.

WRG ★★★★
()

Ребята может кто в теме есть ли хорошие гидлайны как правильно создавать такие библиотеки.

Гайдлайн очень тривиальный - такие библиотеки создавать не нужно

mashina ★★★★★
()

А ты этим самым Catch, пользовался? Если пользовался, как там с моками обыгранно, или что использовал для моков?

pon4ik ★★★★★
()

Сами как-то получаются, когда с темплейтами пишешь. Ну нэймспэйсы не лишними будет делать.

invy ★★★★★
()
Ответ на: комментарий от pon4ik

Нет не пользовался. В моих поделках всегда использовал gtest. Просто как пример привел.

CunMun
() автор топика

открываем александреску и смотрим сколько ненужной боли это приносит... потом закрываем и так не делаем.

кресты и для обычных библиотек не очень.

anonymous
()
Ответ на: комментарий от Begemoth

Это означает только одну вещь

Маловероятно.

ты решил эту библиотеку радикально обобщить относительно типов

Почему и зачем?

все функции библиотеки становятся шаблонами или членами шаблонов классов (или и то, и другое сразу).

Зачем и почему?

Хеадер-онли пишется только ради инлайна. Причём тут твои шаблоны/типы я не понимаю.

TrueTsarC
()
Ответ на: комментарий от TrueTsarC

Хеадер-онли пишется только ради инлайна

Ваше эксперное мнение очень важно для нас.

Begemoth ★★★★★
()
Ответ на: комментарий от TrueTsarC

Для начала готов прочитать ваши аргументы про быстроту.

trex6 ★★★★★
()
Ответ на: комментарий от CunMun

Ребята я просил не спрашивать зачем.

Ребята, просто раздевайтесь, некогда объяснять :)

slackwarrior ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.