Начальные символы подчеркивания обычно используются для частных собственностей и методов . Не техника, которую я обычно использую, но действительно остаюсь популярным среди некоторых программистов.
Я считаю, что это историческое. Пространства имен были введены в C ++ примерно в 1995 году. Разработка Qt началась в 1991 году, поэтому очевидно, что пространства имен использовать нельзя.
Документация для Qt ссылается на пространства имен , хотя я не проверял код, чтобы убедиться, действительно ли они являются пространствами имен C ++
или взломом с публичными объявлениями внутри класса. Я предполагаю, что остальные пытаются не заставлять всех переименовывать все, хотя они могли бы предоставить путь миграции, если бы захотели, например:
namespace Qt
{
class Object { ... };
}
#ifndef NO_OLD_DECLS
typedef Qt::Object QObject;
#endif
Это может быть проблема переносимости. Пространства имен не поддерживаются / поддерживаются не всеми компиляторами, поэтому соглашение об именах помогает сократить конфликты имен.
Поскольку не осталось ни одного компилятора C ++, который не реализует пространства имен, в настоящее время есть только одна причина: брендинг :)
Qt очень консервативен в отношении используемых функций языка C ++. Никаких пространств имен, исключений или RTTI . См. Также эту статью , в которой подробно описывается, почему шаблоны не используются при обработке сигналов / слотов.
Qt использует префикс Q как часть своего стиля кодирования. Обычно он служит для облегчения чтения кода и определения того, что к чему.
Идентификатор:
Принятие стиля кодирования и его единообразное использование упрощает другим людям понимание кода, который они не писали.
Ссылка: Стиль кодирования Qt