Какую банку с червями вы открыли.
Стандартная библиотека C ++ использует underscore_notation для всего, потому что это то, что стандартная библиотека C использует.
Поэтому, если вы хотите, чтобы ваш код выглядел непротиворечивым по всем направлениям (и на самом деле не использовали внешние библиотеки), это единственный путь.
Вы увидите, что boost использует те же обозначения, потому что часто их библиотеки рассматриваются для будущих стандартов.
Помимо этого, существует много соглашений, обычно использующих разные обозначения для обозначения различных типов символов. Обычно используется CamelCase для пользовательских типов, таких как классы и typedefs, и mixedCase для переменных, особенно для дифференциации этих двух, но это, конечно, не универсальный стандарт.
Существует также Венгерская нотация , которая дополнительно дифференцирует определенные типы переменных, хотя упоминание этой фразы может вызывать враждебность у некоторых кодеров.
Лучший ответ, как хорошего программиста на C ++, - принять любое соглашение, используемое в коде, в который вы погружены.