У каждого ли исходника должен быть свой уникальный хедер?

У каждого ли .cc (кроме тестов или исходника с main()) должен быть свой уникальный .h?

Под словом должен имею в виду хорошая ли это практика или нет.

Возможна ли следующая структура проекта вместо уникального хедера для исходников?

project/
├── include/
│   ├── logger.h           # Общий хедер для работы с логами
├── src/
│   ├── logger_info.cc    
│   ├── logger_error.cc
│   ├── logger_debug.cc
│   ├── main.cc

Ответы (2 шт):

Автор решения: Никита Самоуков

Можно без хедеров вообще писать код.

Можно в одном файле.

Можно весь код в хедерах писать, а в мейне только инклуд один оставить.

Можно расширение файлов не .cpp а другим сделать .cc , .c++ и.т.д.

Можно хедеры ложить не рядом с файлом, а в совершенно другом месте.

В плюсах можно ещё много чего, но без веской причины от стандартного вида лучше не отходить.

→ Ссылка
Автор решения: GUN_ter

Тут вопрос в понимании зачем нужны заголовочные файлы (хедеры). Туда обычно выносятся типы данных, прототипы классов и т.д.

По моему мнению это не случайно: для того чтобы обозначить интерфейс программного модуля (который выполняет законченную функцию). Особенно если типы этого модуля, и/или функции, объекты, используются по иерархии проекта в каких-то других модулях. Удобно же открыть заголовочный файл модуля и увидеть там весь его экспортируемый функционал, желательно с комментами, согласитесь!

Выводы:

как писали выше, технически

В плюсах можно ещё много чего

но ИМХО проект совершеннее когда он лучше структурирован.

В книге Страуструпа "Язык программирования С++" подробно на эту тему расписано если что, в сочетании с пояснением принципа раздельной компиляции.

Опять же, для простого проекта, как ваш, такая структура вполне годной выглядит.

→ Ссылка