Каковы недостатки использования «зонтичных» заголовков в проектах C? - PullRequest
2 голосов
/ 18 марта 2019

Я видел интересный паттерн в 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*/

Шаблон был таким жев других файлах.Объяснение, которое я получил, было:

  1. Время компиляции не имело значения в этом проекте
  2. Это было легко использовать (не нужно знать иерархию заголовков)

Дополнительная техническая деталь: в зонт.h они отсортировали директивы include для решения внутренних зависимостей (например, если component_file_2.h использовал component_file_1.h, их порядок был: component_file_1.h сначала, а затем component_file_2.h позже)

Помимо времени компиляции, есть ли серьезные недостатки этого подхода, которые бы противопоставляли его использованию?По каким критериям может быть оправдан рефакторинг кода, который использовал этот подход?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...