Вопрос

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

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

Есть какой-нибудь совет?

Редактировать:Я не говорю о присвоении имен новым классам,

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

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

Это было полезно?

Решение

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

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

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

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

QTextEdit * userNameEdit = new QTextEdit(this);

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

QListView * userListView;

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

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

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

Примерный список вещей, которые соответствуют конвенции:

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

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

Другие советы

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

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

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

Вики :Принципы проектирования Api

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top