Domanda

Sto lavorando con un gruppo di altri programmatori su un progetto open source creato usando C ++ e Qt.

Ora abbiamo bisogno di una convenzione di denominazione per i widget (e altre variabili in generale) per usarlo come standard in tutto il nostro codice in modo che il codice ottenga una migliore leggibilità e un migliore coordinamento tra i programmatori.

Qualche consiglio?

EDIT: non sto parlando di nominare nuove classi,

invece sto parlando di istanze di denominazione dei widget Qt, diciamo che ho una modifica di testo per il nome utente, dovrei chiamarla txtEdtUsrNm?

E in quel caso, come dovrei scegliere le derivazioni?

È stato utile?

Soluzione

Fintanto che stai pensando in questo senso, inizierei leggendo questo articolo di QtQuarterly dall'inizio alla fine.

Progettazione di API C ++ in stile Qt

Detto questo, una cosa che facciamo è mettere il "usa" dell'istanza come prima parte e l'ultima parola completa della classe come ultima parte.

Quindi, il tuo " nome utente " QTextEdit è

QTextEdit * userNameEdit = new QTextEdit(this);

Se c'è ambiguità, come QListView e QTreeView, selezionare l'ultima sezione non ambigua.

QListView * userListView;

Puoi capire come ti piacciono le abbreviazioni (come "Lbl" per QLabel), ma in generale l'intera parola ha funzionato ed è stata facile da leggere.

D'altra parte, non siamo troppo severi su questo e potrebbe essere più importante nominare l'intenzione della variabile di istanza senza il nome della classe perché se, in futuro, si desidera cambiare la classe, si arriva a cambiare il nome che, in assenza di buoni strumenti di refactoring, è una seccatura.

Forse capisci i widget generali che usi di più e scegli una convenzione di denominazione per le superclassi più generali e lascia andare tutto il resto.

Elenco di esempi di cose che aderiscono alla convenzione:

  • layout = Tutte le classi che finiscono in & Quot; Layout " ed eredita QLayout
  • button = Tutte le classi che terminano in " Button " ed eredita QAbstractButton

Le classi ClassName di QAbstract sono un buon posto per pensare a cosa dovrebbe essere in quella lista.

Altri suggerimenti

Poiché Qt è aperto a sviluppatori di terze parti, hanno reso disponibili numerosi documenti relativi allo stile di codifica e ai principi di progettazione dell'API.

Questi documenti sono davvero interessanti. Ecco alcuni link:

Wiki: Qt Coding Style

Wiki: Principi di progettazione di Api

E questo documento (PDF) di Jasmin Blanchette, che vale la pena leggere: Little Manual of API Design

Vorrei solo usare la stessa convenzione di denominazione che utilizza Qt. Rendilo facile per te.

La loro convenzione di denominazione è simile a java.

I nomi completi diventano rapidamente fastidiosi da leggere e digitare, quindi di solito stiamo usando un'abbreviazione:

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

(ottieni la deriva). Sì, ci sono alcune ambiguità, ma di solito sono risolte dal contesto.

Per essere precisi, la domanda riguarda "la denominazione delle istanze dei widget Qt", ma le risposte riguardano le variabili di denominazione che contengono riferimenti alle istanze dei widget.

I widget Qt derivano da QObject che ha una proprietà name con getter objectName (). Qt dà alla proprietà un valore se il programmatore no? Chiamalo " generato automaticamente " o " default " valore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top