В течение многих лет я кодировал С++ стандартным образом, с объявлениями классов в файлах заголовков .hpp и определениях функций в исходных файлах .cpp. Недавно я переехал в новую компанию, где код (по-видимому, под влиянием стилей форсированного кодирования) полностью закодирован в .hpp файлах с одним коротким файлом .cpp для включения файлов заголовков и создания двоичного файла объекта/программы.
Это заставило меня задуматься - каковы сильные/слабые стороны написания кода в файлах заголовков, а не для записи файлов .hpp и .cpp для каждого объекта? Это предполагает, что наш проект не создает общие библиотеки, которые затем связаны в программные двоичные файлы, но вместо этого каждый программный двоичный файл создается из суммы файлов заголовков (и одного исходного файла .cpp). Является ли это новой тенденцией в С++?
например. Объекты шаблонов должны быть только заголовками, но может показаться хорошей идеей разместить классы без шаблонов в заголовочных файлах, а затем просто включить эти общие классы проектов в свои двоичные файлы. Предполагая, что вы создаете новую кодовую базу с нуля, означало бы это меньше ссылок, что могло бы означать меньше ссылок на ошибки и, возможно, более быстрые сборки. Были ли предварительно скомпилированные объекты заголовков также означать, что файлы заголовков ускоряют время сборки? Или время сборки больше, потому что теперь нам нужно скомпилировать весь код при создании двоичного файла, а не связывать общие объекты общей библиотеки?
Также обратите внимание, что здесь мы не пишем API (в этом случае что-то вроде идиомы pimpl даст нам больше гибкости, скрывая реализацию), мы пишем программы для запуска на сайте клиента.
Спасибо заранее,