2008-12-30 16 views
8

Pracuję z grupą innych programistów na projekcie open source zbudowanym przy użyciu C++ i Qt.Konwencja nazewnictwa dla widgetów Qt

Teraz potrzebujemy konwencji nazewnictwa dla widżetów (i innych zmiennych ogólnie), aby używać go jako standard we wszystkich naszych kodach, dzięki czemu kod uzyska lepszą czytelność, a my otrzymamy lepszą koordynację pomiędzy programistami.

Każda rada?

EDIT: Nie mówię o nazywania nowych klas,

zamiast mówię nazywania wystąpień Qt widgety, powiedzmy Mam edytować tekst dla nazwy użytkownika, należy nazwać to txtEdtUsrNm?

A w takim razie jak mam wybrać wyprowadzenia?

+0

Zmniejszenie zakresu tego pytania. Odpowiadałbym, ale zajmie strony i strony. Czy odnosisz się do poziomu klasy? Poziom funkcji? Widżety generowane przez interfejs użytkownika? – mxcl

+1

Twój przykład usunięcia samogłosek wewnętrznych ze słów jako schematu nazewnictwa jest obrzydliwy. Czytanie kodu z tym stylem doprowadziłoby mnie do szału. – mxcl

Odpowiedz

13

Tak długo, jak myślisz o tym, zacznę od przeczytania tego artykułu QtQuarterly od początku do końca.

Designing Qt-Style C++ APIs

Powiedział, że jedna rzecz, że możemy zrobić, to umieścić „użytkowania” na przykład jako części pierwszej i ostatniej pełnej słowo klasy jako ostatniej części.

więc swoją "nazwę użytkownika" QTextEdit jest

QTextEdit * userNameEdit = new QTextEdit(this); 

Jeśli istnieje niejasność, jak QListView i QTreeView, wybierz ostatnią sekcję unabiguous.

QListView * userListView; 

można dowiedzieć się skróty, jak chcesz (takie jak „LBL” dla QLabel), ale generalnie cały wyraz pracował i był łatwy do odczytania.

Z drugiej strony nie jesteśmy zbyt rygorystyczni i może być ważniejsze nazwać intencję zmiennej instancji bez nazwy klasy, ponieważ jeśli w przyszłości chcesz zmienić klasę, otrzymasz zmienić nazwę, która przy braku dobrych narzędzi do refaktoryzacji jest bolesna.

Może wymyślić ogólne widgety, których używasz najbardziej, i wybrać konwencję nazewnictwa dla najbardziej ogólnych super-klas i niech wszystko inne pójdzie.

Przykładowa lista rzeczy, które przystąpią do konwencji:

  • układ = wszystkie klasy, które kończą się „Układ” i dziedziczą QLayout
  • przycisk = Wszystkie klasy, które kończą się „Buttona” i dziedziczą QAbstractButton

The QAbstract ClassName klas są dobrym miejscem, aby myśleć o tym, co powinno być w tym wykazie.

+0

Świetne informacje, dzięki! – Lawand

1

Po prostu użyłbym tej samej konwencji nazewnictwa, której używa Qt. Ułatw sobie to.

Ich konwencja nazewnictwa jest podobna do java.

1

Pełne nazwy szybko stać się uciążliwe, aby przeczytać i typ, więc jesteśmy zazwyczaj przy użyciu skrótu:

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

(masz dryfu). Tak, są pewne niejasności, ale zazwyczaj są one rozwiązywane z kontekstu.

+1

Uważam, że fooPB jest mniej czytelny, chwytliwy i zapisywalny niż fooButton. Pisanie nie jest tym, co programista robi przez większość czasu, ale czytanie i myślenie jest. –

0

Aby być precyzyjnym, pytanie o „nazewnictwa instancji widgetów Qt ", ale odpowiedzi dotyczą zmiennych nazw zawierających odwołania do instancji widgetów.

Widżety Qt pochodzą z QObject, który ma właściwość name z getter objectName(). Czy Qt nadaje tej właściwości wartość, jeśli programista tego nie robi? Nazwij to wartością "generowaną automatycznie" lub "domyślną".

Powiązane problemy