Какова причина именования классов в Qt? - PullRequest
6 голосов
/ 28 августа 2009

Мне интересно, почему Qt использует Q перед каждым именем класса, а не помещает все в пространство имен. Есть ли какая-то конкретная причина, например, облегчение поиска названий, или это просто названия брендов?

Ответы [ 6 ]

7 голосов
/ 28 августа 2009

Я считаю, что это историческое. Пространства имен были введены в C ++ примерно в 1995 году. Разработка Qt началась в 1991 году, поэтому, очевидно, пространства имен не могли использоваться.

3 голосов
/ 28 августа 2009

Это может быть проблема переносимости. Пространства имен не поддерживаются / поддерживаются не каждым компилятором, поэтому соглашение об именах помогает сократить конфликты имен.

2 голосов
/ 28 августа 2009

Документация для Qt ссылается на пространства имен , хотя я не проверял код, чтобы убедиться, что это действительно c ++ namespace s или взлом с публичными объявлениями внутри класса. Я полагаю, что остальное пытается избежать того, что всем нужно будет переименовывать все, хотя они могут предоставить путь миграции, если захотят, например:

namespace Qt
{
class Object { ... };
}

#ifndef NO_OLD_DECLS
typedef Qt::Object QObject;
#endif
2 голосов
/ 28 августа 2009

Qt очень консервативен в отношении функций языка C ++, которые он использует. Нет пространств имен, исключения или RTTI . См. Также эту статью подробное описание причин, по которым шаблоны не используются при обработке сигналов / слотов.

0 голосов
/ 10 сентября 2009

Qt использует префикс Q как часть своего стиля кодирования. Обычно это облегчает чтение кода и определение того, что к чему.

Идентификатор, который:

  • с префиксом «Q» и суффиксом «Private» - это закрытый класс, используемый для деталей реализации и не являющийся частью API (например, QPainterPrivate)
  • имеет префикс "Q", а не , а суффикс "Private" - публичный класс (например, QWidget)
  • с префиксом "q" (нижний регистр) является публичной глобальной функцией (например, qRgb)

Принятие стиля кодирования и его единообразное использование значительно облегчают другим людям понимание кода, который они не писали.

Ссылка: Стиль кодирования Qt

0 голосов
/ 28 августа 2009

Учитывая, что не осталось ни одного компилятора C ++, который не реализует пространства имен, в настоящее время есть только одна причина: Брендинг:)

...