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

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

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

Любой совет?

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

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

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

Уменьшите объем этого вопроса. Я бы ответил на него, но для этого потребуются страницы и страницы. Вы имеете в виду уровень класса? Функциональный уровень? Виджеты, созданные пользовательским интерфейсом?

mxcl 01.01.2009 22:59

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

mxcl 01.01.2009 23:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
2
7 580
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

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

Ответ принят как подходящий

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

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

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

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

QTextEdit * userNameEdit = new QTextEdit(this);

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

QListView * userListView;

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

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

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

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

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

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

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

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

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

Я считаю, что fooPB менее читабелен, понятен и доступен для записи, чем fooButton. Программист большую часть времени занимается не написанием, а чтением и мышлением.

Sebastian Mach 10.01.2011 15:03

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

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

Wiki: Стиль программирования Qt

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

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

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

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

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