Я работаю с группой других программистов над проектом с открытым исходным кодом, созданным с использованием C++ и Qt.
Теперь нам нужно соглашение об именах для виджетов (и других переменных в целом), чтобы использовать его в качестве стандарта во всем нашем коде, чтобы код стал лучше читаемым, и мы получили лучшую координацию между программистами.
Любой совет?
Обновлено: я не говорю об именовании новых классов,
вместо этого я говорю об именовании экземпляров Qt Widgets, скажем, у меня есть текстовое редактирование для имени пользователя, следует ли мне называть его txtEdtUsrNm?
И в таком случае, как мне выбирать производные?
Кроме того, ужасен ваш пример удаления внутренних гласных из слов в качестве схемы именования. Чтение кода в таком стиле свело бы меня с ума.





Я бы просто использовал то же соглашение об именах, что и Qt. Сделайте это легко для себя.
Их соглашение об именах похоже на java.
Пока вы думаете в этом направлении, я бы начал с чтения этой статьи QtQuarterly от начала до конца.
Тем не менее, одна вещь, которую мы делаем, - это помещаем «использование» экземпляра в качестве первой части и последнее полное слово класса в качестве последней части.
Итак, ваше "имя пользователя" QTextEdit
QTextEdit * userNameEdit = new QTextEdit(this);
Если есть двусмысленность, например QListView и QTreeView, выберите последний однозначный раздел.
QListView * userListView;
Вы можете подбирать сокращения, как вам нравится (например, «Lbl» для QLabel), но в целом слово в целом работает и его легко читать.
С другой стороны, мы не слишком строги в этом вопросе, и может быть более важно указать намерение переменной экземпляра без имени класса, потому что, если в будущем вы захотите изменить класс, вы можете изменить имя что в отсутствие хороших инструментов рефакторинга становится проблемой.
Возможно, выясните, какие виджеты вы используете чаще всего, выберите соглашение об именах для самых общих суперклассов и оставьте все остальное.
Примерный список вещей, которые придерживаются соглашения:
Классы QAbstractClassName - хорошее место, чтобы подумать о том, что должно быть в этом списке.
Полные имена быстро становятся неудобными при чтении и вводе, поэтому мы обычно используем сокращение:
QLabel * fooLB;
QPushButton * fooPB;
QTextEdit * fooTE;
QSpinBox * fooSB;
(вы уловили дрейф). Да, есть некоторые неясности, но они обычно разрешаются из контекста.
Я считаю, что fooPB менее читабелен, понятен и доступен для записи, чем fooButton. Программист большую часть времени занимается не написанием, а чтением и мышлением.
Поскольку Qt открыт для сторонних разработчиков, они предоставили несколько документов, касающихся стиля кодирования и принципов проектирования API.
Эти документы действительно интересны. Вот несколько ссылок:
Wiki: Стиль программирования Qt
И этот документ (PDF) от Jasmin Blanchette, который стоит прочитать: Небольшое руководство по дизайну API
Если быть точным, вопрос касается «именования экземпляров виджетов Qt», но ответы касаются именования переменных, содержащих ссылки на экземпляры виджетов.
Виджеты Qt являются производными от QObject, у которого есть свойство name с получателем objectName (). Придает ли Qt значение свойству, если программист этого не делает? Назовите его "автоматически созданным" или "значением по умолчанию".
Уменьшите объем этого вопроса. Я бы ответил на него, но для этого потребуются страницы и страницы. Вы имеете в виду уровень класса? Функциональный уровень? Виджеты, созданные пользовательским интерфейсом?