За основу можно взять Google C++ Style Guide. Для настройки автоматического форматирования используйте инструкцию по настройке Cpp в VSCode. Ниже приведены рекомендации по именованию.
Основным способом создания имён всего является JavaCamelCase. snake_case допускается в названиях локальных переменных, при этом они не должны использоваться в одном файле с CamelCase локальными переменными.
Функции и методы называются словосочетанием, описывающим то, что делаем функция, и начинаются с глагола: const std::string& GetMethodName().
Цель к которой нужно стремиться: по названию должно быть понятно, что делает функция, класс или что хранит в себе переменная без необходимости смотреть реализацию. Стоит избегать названий функций и методов типа DoWork(), переменных типа counter и т.д, кроме случаев, когда это не мешает пониманию.
Допускаются общепринятые короткие названия для переменных типа i,j для счётчиков в циклах.
В аббревиатурах остаётся первая заглавная буква: TMqttClient.
Классы именуются с заглавной T, например TModbusClient.
Базовые классы должны иметь название, заканчивающееся на Base: TModbusClientBase.
Названия классов-интерфейсов начинаются с I: class IException
Методы называются в CamelCase с большой буквы: GetMethodName.
Поля данных (переменные) классов называются с большой буквы:
Называются с маленькой буквы в camelCase. Допускается наименование с маленькой буквы в snake_case.
Препроцессор C использовать не стоит. Вместо него предпочтительно использовать конструкции C++.
В очень редких случаях использование макросов действительно даёт большой выигрыш в читаемости кода. Если вы столкнулись именно с таким случаем, то пользоваться препроцессором можно. Но стоит быть готовыми отстаивать свою правоту на review.