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

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

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

какие-либо советы?

EDIT: я не говорю об именовании новых классов,

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

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

5 ответов


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

Проектирование API В Стиле Qt C++

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

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

QTextEdit * userNameEdit = new QTextEdit(this);

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

QListView * userListView;

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

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

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

пример списка вещей, которые придерживаются Конвенции:

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

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


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

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

Wiki: Стиль Кодирования Qt

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

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


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

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


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

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

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


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

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