2008-12-30 19 views
8

Estoy trabajando con un grupo de otros programadores en un proyecto de código abierto creado utilizando C++ y Qt.Convención de nomenclatura para widgets de Qt

Ahora, necesitamos una convención de nomenclatura para widgets (y otras variables en general) para usarlo como un estándar en todo nuestro código para que el código tenga una mejor legibilidad y obtengamos una mejor coordinación entre programadores.

¿Algún consejo?

EDIT: No estoy hablando sobre el nombramiento de nuevas clases,

vez que estoy hablando denominar instancias de Qt Reproductores, digamos que tengo una edición del texto para el nombre de usuario, debería nombrarlo txtEdtUsrNm?

Y en ese caso, ¿cómo se supone que debo elegir las derivaciones?

+0

Reduce el alcance de esta pregunta. Yo respondería pero tomaría páginas y páginas. ¿Te refieres al nivel de clase? Nivel de función? UI generó widgets? – mxcl

+1

Además, su ejemplo de eliminar las vocales internas de las palabras como un esquema de nombres es espantoso. Leer el código con ese estilo me volvería loco. – mxcl

Respuesta

13

Mientras piense en esta línea, comenzaría leyendo este artículo de QtQuarterly de principio a fin.

Designing Qt-Style C++ APIs

Dicho esto, lo único 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.

lo tanto, su QTextEdit "nombre de usuario" es

QTextEdit * userNameEdit = new QTextEdit(this); 

Si hay ambigüedad, como QListView y QTreeView, recoger la última sección unabiguous.

QListView * userListView; 

Puede averiguar cómo abreviaturas que le gustan (como "Lbl" para QLabel), pero en general, toda la palabra que 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, obtiene cambiar el nombre que, en ausencia de buenas herramientas de refactorización, es un dolor.

Quizás 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.

Lista de ejemplo de las cosas que se adhieren a la convención:

  • layout = Todas las clases que terminan en "Diseño" y heredan QLayout
  • botón
  • = Todas las clases que terminan en "botón" y heredan QAbstractButton

Las clases QAbstract NombredeClase son un buen lugar para pensar en lo que debe estar en esa lista.

+0

¡Excelente información, gracias! – Lawand

1

Solo usaría la misma convención de nomenclatura que usa Qt. Hazlo fácil para ti.

Su convención de nomenclatura es similar a java.

1

Los nombres completos se convierten rápidamente en una molestia para leer y tipo, por lo que estamos por lo general utilizando una abreviatura:

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

(que consigue la deriva). Sí, hay algunas ambigüedades, pero generalmente se resuelven desde el contexto.

+1

Encuentro fooPB mucho menos legible, capturable y escribible que fooButton. Escribir no es lo que el programador hace la mayor parte del tiempo, sino leer y pensar. –

2

Dado que Qt está abierto a desarrolladores de terceros, 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. Aquí hay algunos enlaces:

Wiki : Qt Coding Style

Wiki : Api Design Principles

y este documento (PDF) en el Jasmin Blanchette, que vale la pena leer: Little Manual of API Design

+0

Buenos enlaces, Jérôme – Lawand

0

Para ser más precisos, la pregunta es sobre la "denominación instancias de Qt Widgets ", pero las respuestas se refieren a nombrar variables que contienen referencias a instancias de widgets.

Qt Los widgets derivan 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".

Cuestiones relacionadas