Я видел интересный паттерн в C-проекте: они использовали зонтичный заголовок (заголовок, который включает в себя все от компонента) везде, в том числе и внутри самого компонента.
umbrella.h:
#include "component_file1.h"
#include "component_file2.h"
/* #include each and every header of the component */
component_file1.h:
#include "umbrella.h"
/*include guard and header*/
component_file1.c:
#include "umbrella.h"
/*c code*/
Шаблон был таким жев других файлах.Объяснение, которое я получил, было:
- Время компиляции не имело значения в этом проекте
- Это было легко использовать (не нужно знать иерархию заголовков)
Дополнительная техническая деталь: в зонт.h они отсортировали директивы include для решения внутренних зависимостей (например, если component_file_2.h использовал component_file_1.h, их порядок был: component_file_1.h сначала, а затем component_file_2.h позже)
Помимо времени компиляции, есть ли серьезные недостатки этого подхода, которые бы противопоставляли его использованию?По каким критериям может быть оправдан рефакторинг кода, который использовал этот подход?