Если там нет ответа на вопрос, то ориентироваться стоит на следующие проекты по убыванию приоритета:
Правила написания кода
Использовать ClangFormat
Использовать модули (сделать правильный выбор между PublicDependencyModuleNames или PrivateDependencyModuleNames для добавления зависимости)
Весь код должен быть протестирован
Обработка ошибок
Макрос check используется только для критических условий, без выполнения которых дальнейшее продолжение игры бессмысленно
В большинстве случаев для проверки корректности входных данных используется if и ensure
Получив ошибку, начинать надо с написания теста, выявляющего эту ошибку
Порядок данных в заголовочном файле
Copyright
#pragma once
#include по алфавиту файлов движка
#include по алфавиту файлов проекта
#include FileName.generated.h, если необходим
Forward declaration по алфавиту типов движка (сначала структуры, потом интерфейсы и потом классы)
Forward declaration по алфавиту типов проекта (сначала структуры, потом интерфейсы и потом классы)
Делегаты
Перечисления
Структуры
Объявление класса
Порядок переменных и функций в заголовочном файле
Сначала указываются все сущности public, затем protected и в конце private:
Переменные с макросом UPROPERTY
Статические константы
Статические переменные
Обычные переменные
Делегаты
Конструкторы
Функции с макросом UFUNCTION()
Статические функции
Виртуальные функции (set-функции располагаются выше, чем get-функции)
Обычные функции (set-функции располагаются выше, чем get-функции)
Порядок данных в файле реализации
Copyright
#include заголовочного файла
#include по алфавиту файлов движка
#include по алфавиту файлов проекта
Функции в соответствующем порядке
Порядок функций в файле реализации
Порядок берётся изначально из заголовочного файла (соответственно, в начале файла всегда идут конструкторы), но он изменяется в случае вызова одних функций из других. Например, если функция A() вызывает функцию B(), которая ещё не была реализована, то сразу после функции A() реализуется функция B(), и если внутри неё вызывается функция C(), то следующей реализуется функция C().
Когда все эти функции определены, берётся следующая нереализованная функция из заголовочного файла после функции A().
Правило обращения к переменным класса
Предпочтительно сначала использовать непосредственное обращение к переменной, пока оно не является препятствием. При возникновении неудобств этого подхода стоит переходить на косвенное обращение к переменным, то есть через get-функцию.