Соглашение об именах для виджетов 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: Принципы Проектирования Api
и этот документ (PDF) от Jasmin Blanchette, который стоит прочитать:небольшое руководство по дизайну API
Я бы просто использовал то же соглашение об именах, которое использует Qt. Сделайте это легким для себя.
их соглашение об именах похоже на java.
полные имена быстро становятся надоедливыми для чтения и ввода, поэтому мы обычно используем аббревиатуру:
QLabel * fooLB;
QPushButton * fooPB;
QTextEdit * fooTE;
QSpinBox * fooSB;
(вы получаете дрейф). Да, есть некоторые неясности, но они обычно разрешаются из контекста.
чтобы быть точным, вопрос заключается в "именовании экземпляров виджетов Qt", но ответы касаются именования переменных, содержащих ссылки на экземпляры виджетов.
виджеты Qt являются производными от QObject, который имеет свойство name с getter objectName (). Дает ли Qt свойство значение, если программист этого не делает? Назовите его" автоматически сгенерированным "или" значением по умолчанию".