Организация исходников C++?
Для себя сделал такую структуру (часто использую в проектах если больше 3 тысяч строк)
1) Всё лежит в одном месте
2) C/CPP файлы содержат код, а в заголовке содержат include «header.h»
3) все H файлы содержат прототипы функций, константы и структуры, которые относятся в C/CPP файлу.
4) в файле header.h прописываются все заголовочные файлы (сначала системные, потом свои)

Таким образом очень легко править всё что связано с одним файлом кода (H и CPP файлы имеют одно имя, ток расширение разное). При добавлении нового модуля, нет необходимости прописывать его заголовочный файл в каждом исходнике где он используется, достаточно прописать только в header.h

И к тому же такой подход позволяет легко обходить ситуации с взаимный include (первый на второго, а второй на первый)
Читал в свое время совет, но сам не пробовал (мои проекты не очень сложные) — пишется один .h-файл на весь проект, но каждая логическая секция в нем завернута в 

#ifdef USE_A
...
#endif.
В исходниках соответственно сначала определяется, что использовать, а затем включается .h-файл:

#define USE_A
#define USE_B

#include "project.h"
Автор писал, что такая структура удобна именно для больших проектов. Правда, это книга довольно старая и описывала еще C.