2008-12-30 39 views
8

我正與一羣其他程序員合作開發使用C++和Qt構建的開源項目。Qt小部件的命名約定

現在,我們需要一個小部件(以及其他變量)的命名約定,將其用作所有代碼中的標準,以便代碼具有更好的可讀性,並且我們可以更好地協調程序員。

有什麼建議嗎?

編輯:我不是在談論命名新的類,

,而不是我說的命名Qt控件的情況下,讓我們說我有一個用戶名文本編輯,我應該命名爲txtEdtUsrNm?

在這種情況下,我該如何選擇派生?

+0

減少此問題的範圍。我會回答它,但它會佔用頁面和頁面。你是指級別?功能級別? UI生成的小部件? – mxcl 2009-01-01 19:59:57

+1

此外,你作爲命名方案從單詞中去除內部元音的例子是可怕的。用這種風格閱讀代碼會讓我發瘋。 – mxcl 2009-01-01 20:02:28

回答

13

只要你正在思考這些問題,我首先會從頭到尾閱讀這篇QtQuarterly文章。

Designing Qt-Style C++ APIs

這就是說,一件事,我們要做的就是把該實例的「使用」的第一部分和類作爲最後部分的最後一個完整的單詞。

所以,你的 「用戶名」 的QTextEdit是

QTextEdit * userNameEdit = new QTextEdit(this); 

如果有歧義,如而QListView和QTreeView則,挑選最後unabiguous部分。

QListView * userListView; 

你可以找出縮寫你怎麼樣(如「的Lbl」爲QLabel),但通常,整個單詞已經工作,並一直易於閱讀。

另一方面,我們對此並不太嚴格,可能更重要的是在沒有類名的情況下命名實例變量的意圖,因爲如果將來想要更改類,則會得到改變這個名字,如果沒有好的重構工具,這是一種痛苦。

也許找出你最常用的小部件,然後爲最一般的超類選擇一個命名約定,讓所有其他部分都去。的事情,堅持公約

列表示例:

  • 佈局=爲此在 「佈局」,並繼承QLayout所有類
  • 按鈕=該結束「按鈕」,並且繼承QAbstractButton所有課程

的QAbstract 類名類想想應該是在該名單有什麼好地方。

+0

優秀信息,謝謝! – Lawand 2009-01-03 20:27:17

1

我只會使用與Qt使用相同的命名約定。讓自己輕鬆一下。

它們的命名約定與java類似。

1

的全名迅速成爲麻煩閱讀和類型,所以我們通常使用的縮寫:

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

(你得到的漂移)。是的,有些含糊不清,但通常是從上下文中解決。

+1

我發現fooPB的方式比fooButton更不易讀,可抓取和可寫。寫作不是程序員大部分時間的工作,而是閱讀和思考。 – 2011-01-10 12:03:14

0

準確地說,問題是關於「命名Qt Widgets的實例「,但答案是關於命名變量的變量,它們持有對小部件實例的引用。

Qt Widgets派生自QObject,它具有getter objectName()的name屬性。如果程序員不這樣做,Qt會給這個屬性一個值嗎?將其稱爲「自動生成」或「默認」值。