c++ - guia - Convención de nombres para widgets Qt
qgis manual (5)
Solo usaría la misma convención de nomenclatura que usa Qt. Hazlo fácil para ti.
Su convención de nombres es similar a Java.
Estoy trabajando con un grupo de otros programadores en un proyecto de fuente abierta creado con C ++ y Qt.
Ahora, necesitamos una convención de nomenclatura para widgets (y otras variables en general) para usarla como estándar en todo nuestro código, de modo que el código tenga una mejor legibilidad y obtengamos una mejor coordinación entre los programadores.
¿Algún consejo?
EDITAR: no estoy hablando de nombrar nuevas clases,
en cambio, estoy hablando de nombrar instancias de Qt Widgets, digamos que tengo una edición de texto para el nombre de usuario, ¿debería darle el nombre txtEdtUsrNm?
Y en ese caso, ¿cómo se supone que debo elegir derivaciones?
Los nombres completos rápidamente se vuelven molestos de leer y escribir, por lo que generalmente usamos una abreviatura:
QLabel * fooLB;
QPushButton * fooPB;
QTextEdit * fooTE;
QSpinBox * fooSB;
(obtienes la deriva). Sí, hay algunas ambigüedades, pero generalmente se resuelven desde el contexto.
Para ser precisos, la pregunta es sobre "nombrar instancias de Qt Widgets", pero las respuestas son sobre nombrar variables que contienen referencias a instancias de widgets.
Qt Widgets deriva de QObject que tiene una propiedad de nombre con getter objectName (). Qt le da a la propiedad un valor si el programador no? Llámalo valor "generado automáticamente" o "predeterminado".
Como Qt está abierto a desarrolladores externos, pusieron a disposición varios documentos sobre el estilo de codificación y los principios de diseño de la API.
Estos documentos son realmente interesantes. Aqui hay unos cuantos enlaces :
Wiki: Estilo de codificación Qt
Wiki: Principios de diseño de Api
Y este documento (PDF) de Jasmin Blanchette, que vale la pena leer: Little Manual of API Design
Mientras piense en esta línea, comenzaría leyendo este artículo de QtQuarterly de principio a fin.
Diseñando API C ++ de Qt-Style
Dicho eso, una cosa que hacemos es poner el "uso" de la instancia como la primera parte y la última palabra completa de la clase como la última parte.
Entonces, su "nombre de usuario" QTextEdit es
QTextEdit * userNameEdit = new QTextEdit(this);
Si hay ambigüedad, como QListView y QTreeView, elija la última sección no ambigua.
QListView * userListView;
Puede encontrar abreviaturas a su gusto (como "Lbl" para QLabel), pero en general, la palabra completa ha funcionado y ha sido fácil de leer.
Por otro lado, no somos demasiado estrictos con esto y podría ser más importante nombrar la intención de la variable de instancia sin el nombre de clase porque si, en el futuro, desea cambiar la clase, puede cambiar el nombre que, en ausencia de buenas herramientas de refactorización, es un dolor.
Tal vez descubra los widgets generales que más usa, y elija una convención de nomenclatura para las superclases más generales y deje que todo lo demás funcione.
Ejemplo de lista de cosas que se adhieren a la convención:
- diseño = Todas las clases que terminan en "Diseño" y heredan QLayout
- button = Todas las clases que terminan en "Botón" y heredan QAbstractButton
Las clases QAbstract ClassName son un buen lugar para pensar sobre lo que debería estar en esa lista.