Ну, вот что я делаю. Я пытаюсь, и в целом терплю неудачу, но ИМХО все равно стоит попробовать, чтобы большая часть моего кода не знала, какую среду пользовательского интерфейса я использую. В частности, для операций рисования пользовательских виджетов я хочу, чтобы они снова работали позже, если я переключусь с WX на Qt. Таким образом, у меня есть свой собственный device_context, который является абстракцией того, что мне нужно. Затем у меня есть WX-версия device_context, которая выполняет вызовы отрисовки wxDC и содержит wxDC *.
Конечно, вы узнаете это как паттерн моста.
Так, как я называю вещи? Ну, нет никакой причины называть device_context wx_device_context, так как я вполне мог говорить с Qt. Я пытаюсь скрыть WX от моего кода, помните?
НО! Специальный подкласс WX, который создается от имени моих клиентов, называется wx_device_context и фактически находится в кармане пространства имен wx, созданном только для таких целей.
Как это относится к вам? Что ж, если у вас возникнет искушение назвать класс QSomething, то вы, вероятно, создаете что-то особенное, связанное с Qt особым образом. Можете ли вы скрыть этот факт через создание подклассов, предоставляя интерфейс, который клиенты могут использовать, который не зависит от библиотеки пользовательского интерфейса? Может ли созданный вами виджет быть сделан таким образом? Если вы когда-нибудь решили, что вам нужно использовать какую-то другую библиотеку пользовательского интерфейса, вы застряли или можете просто переопределить некоторые базовые структуры, чтобы ваши пользовательские виджеты работали с новой библиотекой?
Смысл в том, что ваш соблазн назвать класс QSomething - это «запах», хотя он обычно встречается и обычно допускается, и вы можете подумать о том, что он указывает и что вы можете сделать, если что-нибудь, с ним .