Frage

Ich arbeite mit einer Gruppe von anderen Programmierern auf einem Open-Source-Projekt gebaut mit C ++ und Qt.

Nun müssen wir eine Namenskonvention für Widgets (und andere Variablen im Allgemeinen) es als Standard zu verwenden, in allen unseren Code, so dass, erhält der Code eine bessere Lesbarkeit und wir bekommen eine bessere Koordination zwischen den Programmierern.

Jede Beratung?

EDIT: Bin rede nicht über neue Klassen zu benennen,

stattdessen ich spreche Instanzen von Qt Widgets zu nennen, sagen wir mal ich einen Text bearbeiten für Benutzernamen haben, sollte ich nennen es txtEdtUsrNm?

Und in diesem Fall, wie ich Ableitungen wählen bin sollte?

War es hilfreich?

Lösung

Solange Sie in diese Richtung denken, ich durch das Lesen dieses QtQuarterly Artikel von Start-to-Finish beginnen würde.

Designing Qt-Style C ++ APIs

Wie gesagt, eine Sache, die wir tun, ist die „Verwendung“ der Instanz als den ersten Teil und das letzte vollständige Wort der Klasse als letzten Teil zu setzen.

So, Ihr "Benutzername" QTextEdit ist

QTextEdit * userNameEdit = new QTextEdit(this);

Wenn es Mehrdeutigkeit ist, wie QListView und QTreeView, den letzten unabiguous Abschnitt auswählen.

QListView * userListView;

Sie können Abkürzungen herausfinden, wie man (wie „Lbl“ für QLabel) mögen, aber im Allgemeinen hat sich das ganze Wort gearbeitet und war leicht zu lesen.

Auf der anderen Seite sind wir nicht zu streng darüber, und es könnte wichtiger sein, die Absicht der Instanzvariable ohne die Klassennamen zu nennen, denn wenn in der Zukunft, mögen Sie die Klasse ändern, Sie erhalten ändern Sie den Namen, die in Abwesenheit von guten Refactoring-Tools, ist ein Schmerz.

Möglicherweise ist die allgemeinen Widgets, die Sie am häufigsten verwenden, herauszufinden, und eine Namenskonvention für die allgemeinste Super-Klassen wählen und lassen Sie alles anderes gehen.

Beispiel Liste der Dinge, die die Konvention eingehalten werden:

  • layout = Alle Klassen, die in enden "Layout" und erben QLayout
  • Taste = Alle Klassen, die in "Button" beenden und erben QAbstractButton

Die QAbstract Klassenname Klassen ist ein guter Ort, um darüber nachzudenken, was in dieser Liste sein soll.

Andere Tipps

Da Qt ist offen für Drittentwickler, sie zur Verfügung mehr Unterlagen über die Art der Programmierung und die API-Design-Prinzipien gemacht.

Diese Dokumente sind wirklich interessant. Hier sind ein paar Links:

Wiki: Qt Codierstil

Wiki: Api-Design-Prinzipien

Und dieses Dokument (PDF) von Jasmin Blanchette, die lesenswert ist: Kleines Handbuch des API Designs

Ich würde verwenden Sie einfach die gleiche Namenskonvention, dass Qt verwendet. Machen Sie es sich einfach.

Die Namenskonvention ist ähnlich wie Java.

Die vollständigen Namen schnell lästig werden und die Art zu lesen, so dass wir in der Regel eine Abkürzung verwenden:

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

(Sie können die Drift). Ja, es gibt einige Unklarheiten, aber sie sind in der Regel aus dem Kontext gelöst werden.

Um genau zu sein, ist die Frage nach dem „Namens Instanzen von Qt Widgets“, aber die Antworten sind über Benennung von Variablen Verweise auf Instanzen von Widgets zu halten.

Qt Widgets stammen aus QObject, die einen Namen Eigenschaft mit Getter ObjektName hat (). Ist Qt der Eigenschaft einen Wert geben, wenn der Programmierer nicht? Nennen Sie es "auto erzeugt" oder "default" Wert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top