Соглашение об именах для виджетов Qt

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

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

Любой совет?

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

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

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

5 ответов

Решение

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

Разработка API-интерфейсов Qt-Style C++

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

Итак, ваше "имя пользователя" QTextEdit

QTextEdit * userNameEdit = new QTextEdit(this);

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

QListView * userListView;

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

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

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

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

  • layout = Все классы, которые заканчиваются на "Layout" и наследуют QLayout
  • button = Все классы, которые заканчиваются на "Button" и наследуют QAbstractButton

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

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

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

Wiki: Qt Coding Style

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам