Соглашение об именах для виджетов Qt - PullRequest
10 голосов
/ 31 декабря 2008

Я работаю с группой других программистов над проектом с открытым исходным кодом, созданным с использованием C ++ и Qt.

Теперь нам нужно соглашение об именах для виджетов (и других переменных в целом), чтобы использовать его в качестве стандарта во всем нашем коде, чтобы код стал лучше читаемым и мы лучше координировали работу программистов.

Любой совет?

РЕДАКТИРОВАТЬ: Я не говорю о наименовании новых классов,

Вместо этого я говорю об именовании экземпляров Qt Widgets, скажем, у меня есть текстовое редактирование для имени пользователя, я должен назвать его txtEdtUsrNm?

И в таком случае, как я должен выбирать деривации?

Ответы [ 5 ]

15 голосов
/ 01 января 2009

Пока вы размышляете в этом направлении, я бы начал с прочтения этой статьи QtQuarterly от начала до конца.

Разработка API C ++ в Qt-Style

Тем не менее, одна вещь, которую мы делаем, это помещает "использование" экземпляра в качестве первой части и последнее полное слово класса в качестве последней части.

Итак, ваше «имя пользователя» QTextEdit равно

QTextEdit * userNameEdit = new QTextEdit(this);

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

QListView * userListView;

Вы можете найти сокращения, как вам нравится (например, "Lbl" для QLabel), но в целом все слово сработало и его было легко читать.

С другой стороны, мы не слишком строги в этом вопросе, и может быть важнее назвать намерение переменной экземпляра без имени класса, потому что, если в будущем вы захотите изменить класс, вы получите изменить имя, которое при отсутствии хороших инструментов рефакторинга является болью.

Может быть, выяснить общие виджеты, которые вы используете чаще всего, и выбрать соглашение об именах для самых общих суперклассов и позволить всему остальному уйти.

Пример списка вещей, которые придерживаются соглашения:

  • layout = Все классы, заканчивающиеся на «Разметка» и наследование QLayout
  • button = Все классы, которые заканчиваются на «Button» и наследуют QAbstractButton

Классы QAbstract ClassName являются хорошим местом для размышлений о том, что должно быть в этом списке.

2 голосов
/ 22 июля 2009

Поскольку Qt открыта для сторонних разработчиков, они предоставили несколько документов, касающихся стиля кодирования и принципов разработки API.

Эти документы действительно интересные. Вот несколько ссылок:

Wiki: Qt Coding Style

Wiki: Принципы разработки API

И этот документ (PDF) от Жасмин Бланшетт, который стоит прочесть: Маленькое руководство по API Design

1 голос
/ 21 июля 2009

Полные имена быстро надоедают читать и печатать, поэтому мы обычно используем сокращение:

QLabel * fooLB;
QPushButton * fooPB;
QTextEdit * fooTE;
QSpinBox * fooSB;

(вы получаете дрейф). Да, есть некоторые неясности, но они обычно решаются из контекста.

1 голос
/ 31 декабря 2008

Я бы просто использовал то же соглашение об именах, которое использует Qt. Сделать это легко для себя.

Их соглашение об именах аналогично Java.

0 голосов
/ 30 мая 2012

Если быть точным, вопрос касается «именования экземпляров виджетов Qt», но ответы касаются именования переменных, содержащих ссылки на экземпляры виджетов.

Виджеты Qt являются производными от QObject, который имеет свойство name с getter objectName (). Предоставляет ли Qt свойству значение, если программист этого не делает? Назовите его «автоматически сгенерированным» или «значением по умолчанию».

...