2008-12-30 8 views
8

Je travaille avec un groupe d'autres programmeurs sur un projet open source construit en utilisant C++ et Qt. Maintenant, nous avons besoin d'une convention de nommage pour les widgets (et d'autres variables généralement) pour l'utiliser comme standard dans tout notre code afin que le code soit plus lisible et que nous ayons une meilleure coordination entre les programmeurs.Convention de nommage pour les widgets Qt

Un conseil?

EDIT: ne parle pas nommer de nouvelles classes,

au lieu que je parle de cas nommant Qt Widgets, disons que j'ai un texte pour modifier de nom d'utilisateur, dois-je nommer txtEdtUsrNm?

Et dans ce cas, comment suis-je supposé choisir les dérivations?

+0

Réduire la portée de cette question. J'y répondrais mais cela prendrait des pages et des pages. Vous référez-vous au niveau de la classe? Niveau de la fonction? UI a généré des widgets? – mxcl

+1

En outre, votre exemple de suppression des voyelles internes des mots en tant que schéma de dénomination est hideux. Lire un code avec ce style me rendrait fou. – mxcl

Répondre

13

Tant que vous pensez à ce sujet, je commencerais par lire cet article de QtQuarterly du début à la fin.

Designing Qt-Style C++ APIs

Cela dit, une chose que nous faisons est de mettre l ' « utilisation » de l'instance comme la première partie et le dernier mot complet de la classe comme la dernière partie.

Ainsi, votre "nom d'utilisateur" QTextEdit est

QTextEdit * userNameEdit = new QTextEdit(this); 

En cas d'ambiguïté, comme QListView et QTreeView, choisissez la dernière section unabiguous.

QListView * userListView; 

Vous pouvez comprendre les abréviations comment vous aimez (comme « Lbl » pour QLabel), mais en général, le mot entier a travaillé et a été facile à lire. D'autre part, nous ne sommes pas trop stricts à ce sujet et il peut être plus important de nommer l'intention de la variable d'instance sans le nom de la classe, car si, dans le futur, vous voulez changer la classe, vous obtenez changer le nom qui, en l'absence de bons outils de refactoring, est une douleur. Peut-être trouver les widgets généraux que vous utilisez le plus, et choisissez une convention de nommage pour les super-classes les plus générales et laissez tout le reste aller.

Exemple liste des choses qui adhèrent à la convention:

  • layout = Toutes les classes qui se terminent par "Mise en page" et héritant QLayout
  • bouton
  • = Toutes les classes qui se terminent par "Button" et héritant QAbstractButton

Les classes QAbstract ClassName sont un bon endroit pour penser à ce qui devrait être dans cette liste.

+0

Super info, merci! – Lawand

1

Je voudrais simplement utiliser la même convention de nommage que Qt utilise. Rendez-le facile pour vous-même.

Leur convention de nommage est similaire à java.

1

Les noms complets deviennent rapidement gênant pour lire et le type, donc nous utilisons généralement une abréviation:

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

(vous obtenez la dérive). Oui, il y a certaines ambiguïtés, mais elles sont généralement résolues du contexte.

+1

Je trouve fooPB beaucoup moins lisible, facile à saisir et à écrire que fooButton. L'écriture n'est pas ce que le programmeur fait la plupart du temps, mais lire et penser est. –

0

Pour être précis, la question est de « nommage instances de Qt Widgets ", mais les réponses portent sur la désignation de variables contenant des références à des instances de widgets. Qt Les Widgets dérivent de QObject qui a une propriété name avec getter objectName(). Est-ce que Qt donne une valeur à la propriété si le programmeur ne le fait pas? Appelez-la "auto generated" ou "default".

Questions connexes