Когда пишут все в заголовках - в чем минусы?
От: Shmj Ниоткуда  
Дата: 13.02.23 23:05
Оценка:
Как вы относитесь к этой библиотеке и примененному там подходу: https://github.com/CrowCpp/Crow

?
Re: Когда пишут все в заголовках - в чем минусы?
От: wl. Россия  
Дата: 14.02.23 05:43
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Как вы относитесь к этой библиотеке и примененному там подходу: https://github.com/CrowCpp/Crow


относительный минус одного огромного файла — некоторые IDE плохо с такими работают, начинают дико тормозить, не могут найти место в файле, когда пытаешься перейти к определению функции. Например, XCode такая.
Но так как это библиотека, работать напрямую с этим файлом ты не будешь, так что минусов нет
Re: Когда пишут все в заголовках - в чем минусы?
От: DiPaolo Россия  
Дата: 14.02.23 07:06
Оценка: +3
S>Как вы относитесь к этой библиотеке и примененному там подходу: https://github.com/CrowCpp/Crow

S>?


индифферентно

Шымж, кончай спамить, а. Есть конкретные вопросы — пиши. И уж будь добр больше контекста давай в своих сообщениях, а то ты все разделы форума захламляешь всякими рандомными вопросами. Вот конкретно тут: напиши, что ты ищешь; что смущает в этой либе; не можешь подключить — так и напиши; есть вопросы в производительности — так и спроси; какой подход тебя интересует; сам что думаешь.

Ну короче, твои посты кажутся написанными ботом. Я абсолютно не уверен, что ты все это через себя пропускаешь. Спамишь как из пулемета, блин.
Патриот здравого смысла
Re[2]: Когда пишут все в заголовках - в чем минусы?
От: Shmj Ниоткуда  
Дата: 14.02.23 07:16
Оценка:
Здравствуйте, DiPaolo, Вы писали:

DP>индифферентно

DP>Шымж, кончай спамить, а. Есть конкретные вопросы — пиши.

Думаю сам так писать, почему нет? Зачем плодить сущности?
Re[3]: Когда пишут все в заголовках - в чем минусы?
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 14.02.23 07:38
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Думаю сам так писать, почему нет? Зачем плодить сущности?

Там же шаблоны везде. Как ты их в cpp запихаешь?
Sic luceat lux!
Re[2]: Когда пишут все в заголовках - в чем минусы?
От: Skorodum Россия  
Дата: 14.02.23 07:47
Оценка: +2
Здравствуйте, wl., Вы писали:

wl.>Но так как это библиотека, работать напрямую с этим файлом ты не будешь, так что минусов нет

Минус в скорости сборки.
Re: Когда пишут все в заголовках - в чем минусы?
От: LaptevVV Россия  
Дата: 14.02.23 07:48
Оценка: 13 (2) +1
Минус может быть только один — объем транслируемого кода.
А так я вижу одни плюсы.
Например, SQLite — прямо в виде исходных кодов прямо в твой прогу включается, и она становится совершенно независимой от наличия SQLite у заказчика.
unit-тестирование с doctest — это класс!!!
Пока народ сочинял всякие проги/библиотеки для этого — я нифига не пользовался.
А сейчас — — блеск, инклуд написал, и пиши себе тесты по самые помидоры.
Я вот предпочитаю именно такой подход и стараюсь разыскать либу подобного типа для разных работ.
Это же сродни пакетам в Go.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Когда пишут все в заголовках - в чем минусы?
От: Shmj Ниоткуда  
Дата: 14.02.23 08:54
Оценка:
Здравствуйте, Kernan, Вы писали:

S>>Думаю сам так писать, почему нет? Зачем плодить сущности?

K>Там же шаблоны везде. Как ты их в cpp запихаешь?

Тут не в шаблонах дело а именно целенаправленны отказ от cpp-файлов. Для примера: https://github.com/CrowCpp/Crow/blob/master/include/crow/task_timer.h

Почему метод process_tasks реализован в заголовочном файле а не как обычно в cpp?
Re[5]: Когда пишут все в заголовках - в чем минусы?
От: LuciferSaratov Россия  
Дата: 14.02.23 09:26
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Почему метод process_tasks реализован в заголовочном файле а не как обычно в cpp?


ну, так проще подключить этот код в свой проект.
кроме этого особых преимуществ я не вижу, остаются только недостатки.
по большому счёту, это личные предпочтения автора кода.
никакого скрытого мегазамысла в этом нет.
Re: Когда пишут все в заголовках - в чем минусы?
От: Chorkov Россия  
Дата: 14.02.23 09:57
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Как вы относитесь к этой библиотеке и примененному там подходу: https://github.com/CrowCpp/Crow


S>?


Минусы:
1) Время компиляции (и время отдельной единицы трансляции у пользователя библиотеки, и необходимость пересборки всего, при внесении изменений в код библиотеки).
2) Раздувание результирующего кода (клонирование тела inline функций).
3) Нарушение изоляции (инкапсуляции).

Плюсы:
1) Простота распространения/подключения.


Пока проект маленький — плюсы перевешивают, но с ростом проекта (с ростом числа таких библиотек) — минусы растут быстрее чем линейно, в отличии от плюса.

Нормально если это редко обновляемые библиотеки (извлекли из git-а, и живем с одной версией библиотеки, до выпуска следующего релиза).
Совсем плохо, если эта библиотека — ваша корпоративная (т.е. изменения в нее вносятся регулярно).
Эти изменения начинают заметно тормозить всех пользователей, даже если улучшения не меняют интерфейс библиотеки.
Re: Когда пишут все в заголовках - в чем минусы?
От: rg45 СССР  
Дата: 14.02.23 10:21
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Когда пишут все в заголовках — в чем минусы?


На этот вопрос ты без труда мог бы найти ответ самостоятельно — если бы хотел, конечно.

S>Как вы относитесь к этой библиотеке и примененному там подходу: https://github.com/CrowCpp/Crow?


А в теле сообщения у тебя вообще другой вопрос — не тот, что в заголовке.

Все это указывает на то, что, скорее всего, ответы на вопросы тебя мало интересуют, ты просто заскочил потрындеть мимоходом.

- Как Вы относитесь к этой библиотеке?
— А Вы из какой газеты?

--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 14.02.2023 10:23 rg45 . Предыдущая версия . Еще …
Отредактировано 14.02.2023 10:21 rg45 . Предыдущая версия .
Отредактировано 14.02.2023 10:21 rg45 . Предыдущая версия .
Re[2]: Когда пишут все в заголовках - в чем минусы?
От: so5team https://stiffstream.com
Дата: 14.02.23 11:42
Оценка:
Здравствуйте, Chorkov, Вы писали:

C>2) Раздувание результирующего кода (клонирование тела inline функций).


Вроде бы уже давно inline -- это всего лишь указание компилятору на то, что нет нарушения ODR в результате включения одного заголовка в несколько единиц трансляции. Будет ли реальная подстановка тела в место вызова решает компилятор и, возможно, линкер.

C>3) Нарушение изоляции (инкапсуляции).


А это как?
Re[3]: Когда пишут все в заголовках - в чем минусы?
От: Chorkov Россия  
Дата: 14.02.23 13:12
Оценка: 8 (1)
Здравствуйте, so5team, Вы писали:

S>Здравствуйте, Chorkov, Вы писали:


C>>2) Раздувание результирующего кода (клонирование тела inline функций).


S>Вроде бы уже давно inline -- это всего лишь указание компилятору на то, что нет нарушения ODR в результате включения одного заголовка в несколько единиц трансляции. Будет ли реальная подстановка тела в место вызова решает компилятор и, возможно, линкер.


Так, но если определение функции доступно в данной единице трансляции, то вероятность что она будет встроена — выше.
Если функция недоступна — то ниже. Если LTCG отключен, то точно не строит.

C>>3) Нарушение изоляции (инкапсуляции).


S>А это как?


Тут два аспекта:

1) Многие библиотеки мусорят в глобальное пространство имен. Возможны конфликты.

Например: https://ru.stackoverflow.com/questions/1460674/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-%D0%BF%D1%80%D0%B8-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B8-execution-%D0%B2-qt/


2) Если реализация видна пользователю "насквозь", то велик соблазн вызвать, например, вызвать функцию из `namespace private`.
Если детали реализации лежат в отдельных заголовочных файлах, которые недоступны для #include из стороннего кода — то такая вероятность сильно снижается.
Re[4]: Когда пишут все в заголовках - в чем минусы?
От: so5team https://stiffstream.com
Дата: 14.02.23 14:47
Оценка:
Здравствуйте, Chorkov, Вы писали:

S>>А это как?


C>1) Многие библиотеки мусорят в глобальное пространство имен. Возможны конфликты.


Понятно. Отмечу лишь, что не могу вспомнить header-only плюсовые библиотеки, которые бы не использовали пространств имен.

C>2) Если реализация видна пользователю "насквозь", то велик соблазн вызвать, например, вызвать функцию из `namespace private`.


Это уже из категории ССЗБ.
Re[5]: Когда пишут все в заголовках - в чем минусы?
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 14.02.23 15:28
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Почему метод process_tasks реализован в заголовочном файле а не как обычно в cpp?

Это один частный файл, остальное это шаблон на шаблоне. Я думаю автор просто хотел header-only либу сделать.
Sic luceat lux!
Re[6]: Когда пишут все в заголовках - в чем минусы?
От: Shmj Ниоткуда  
Дата: 14.02.23 17:21
Оценка: -2 :))
Здравствуйте, Kernan, Вы писали:

K>Здравствуйте, Shmj, Вы писали:


S>>Почему метод process_tasks реализован в заголовочном файле а не как обычно в cpp?

K>Это один частный файл, остальное это шаблон на шаблоне. Я думаю автор просто хотел header-only либу сделать.

А что мешает с шаблонами применять стандартный механизм разделения на декларацию в заголовках и определение в cpp-файлах? Или вы просто не знаете как это записать?

Вот пример, пользуйтесь: https://stackoverflow.com/questions/13477086/use-of-class-template-requires-template-argument-list

Отредактировано 14.02.2023 17:23 Shmj . Предыдущая версия . Еще …
Отредактировано 14.02.2023 17:22 Shmj . Предыдущая версия .
Re[4]: Когда пишут все в заголовках - в чем минусы?
От: Shmj Ниоткуда  
Дата: 14.02.23 17:24
Оценка:
Здравствуйте, Kernan, Вы писали:

S>>Думаю сам так писать, почему нет? Зачем плодить сущности?

K>Там же шаблоны везде. Как ты их в cpp запихаешь?

https://stackoverflow.com/questions/13477086/use-of-class-template-requires-template-argument-list — пример
Re[5]: Когда пишут все в заголовках - в чем минусы?
От: rg45 СССР  
Дата: 14.02.23 18:52
Оценка: +2
Здравствуйте, Shmj, Вы писали:

S>https://stackoverflow.com/questions/13477086/use-of-class-template-requires-template-argument-list — пример


А ты еще более безмозглый, чем я думал

Исчезни отсюда, пожалуйста. Тебе что, других форумов мало?
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 14.02.2023 18:58 rg45 . Предыдущая версия . Еще …
Отредактировано 14.02.2023 18:57 rg45 . Предыдущая версия .
Re: Если всё писать в заголовке, то тогда на любое изменение в любом файле проек
От: T4r4sB Россия  
Дата: 14.02.23 18:56
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Как вы относитесь к этой библиотеке и примененному там подходу: https://github.com/CrowCpp/Crow


S>?
Re[6]: Когда пишут все в заголовках - в чем минусы?
От: Shmj Ниоткуда  
Дата: 14.02.23 20:09
Оценка:
Здравствуйте, rg45, Вы писали:

R>А ты еще более безмозглый, чем я думал

R>Исчезни отсюда, пожалуйста. Тебе что, других форумов мало?

У нас принято даже при глупости собеседника — не опускаться до перехода на личности а давать исчерпывающий детальный ответ даже на глупый вопрос, как бы обличающий оппонента, чтобы всем все стало понятно. Я достаточно детально ответил на ваш вопрос?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.