Насколько сильно влияет кол-во инклюдов на работу кода
Last updated
Was this helpful?
Last updated
Was this helpful?
На работу кода не влияет. Влияет на скорость компиляции. Если вы изменяете что-то в заголовочном файле, где у вас объявлены структуры или другие типы данных, то все единицы трансляции (.сpp файлы), где используется данный заголовочный файл будут перекомпилированы. Если данный заголовочный файл не изменяется, то влиять на перекомпиляцию он не будет.
Так же в Unreal Engine при компиляции используется оптимизация, которая называется UnityBuild (к другому игровому движку отношение это не имеет). При данном процессе несколько .cpp файлов объединяются в один и происходит совместная компиляция.
Поэтому, чтобы наглядно посмотреть какие файлы перекомпилируются, можно для теста в ShootThemUpEditor.Target.cs
установить флаг bUseUnityBuild = false;
Перекомпилируются все .сpp файлы, где подключен STUCoreTypes.h явно или косвенно (например в STULauncherWeapon он подтягивается из заголовочного файла STUBaseWeapon)
В консоли будет такая картина:
Я бы так примерно формализовал использование заголовочных файлов для типов данных:
1. Если структура, enum, делегат или какой-то другой тип используется только для внутреннего поведения актора, то декларировать данный тип лучше в соответствующем файле актора.
2. Если типы используются в разных классах, создаем заголовочный файл. Если проект небольшой, то достаточно одного заголовочного файла, например, MainTypes.h (так мы делали в проекте курса)
3. Если проект усложняется, то лучше группировать семантически: WeaponTypes.h, CoreTypes.h, AITypes.h и так далее. (в проекте курса мы так не делали, чтобы не усложнять повествование)
Сделать rebuild (Тут может возникнуть проблема с виртуальной памятью - ). После этого, например, добавить пустую строчку в файл STUCoreTypes.h и сделать build.