2016-08-17 148 views
1

在學習QML時,我想從一開始就學習一種好的風格。 但是,在命名方面,我已經遇到了一些問題,而且我找不到像「世界知名」編碼慣例的東西,它不僅涵蓋了您的語句順序,還包含一些很好的命名約定 (如發現這裏:http://doc.qt.io/qt-4.8/qml-best-practices-coding.html)。避免QML中的名稱衝突

我發現的問題如下:
屬性,標識,(模型)角色 - 它們都可以很容易地發生衝突,特別是當ID和角色通過多層項目存在時更是如此。

那麼,有沒有關於如何命名你的任何良好的指導方針:

  • 性能
  • 角色
  • 標識
  • 功能
  • 函數變量
  • 組件

在實地證明是值得的嗎?

+2

與C++沒什麼不同,在給定的類中,所有成員都必須具有唯一的名稱(重載在一邊)。將角色,屬性和函數視爲屬於一個名稱空間。 ID始終可以獨立解析,它們形成了自己的名稱空間。 –

回答

1

QML已經強制實施一些命名約定 - 類型必須大寫字母開頭,屬性必須用小寫字母開頭,等

不幸的是,QML元素配備了相當多的東西給他們,往往是你遇到命名衝突的情況。在這種情況下,「最內層的聲明」在解析內容時似乎優先,那就是你自己的聲明會影響庫存屬性,並且沒有辦法解決這些問題,不像在C++中,你可以使用BaseType::stuff。我列出了一種可能的方法,以防您需要覆蓋並仍然訪問「繼承」成員here

如果您只需要避免衝突 - 預先考慮某些事情就能很好地工作。最基本的方法是使用下劃線,如_something - QML的東西永遠不會以下劃線開頭,所以沒有衝突的危險。對於類型,我還預先設置了一個字符,這對於在項目樹視圖中對組件進行排序/分組也很有用,我在前面加上U_Something - U代表UI,C代表核心,P代表原型等等。在編程中永久使用的舊方法,尤其是在沒有類,名稱空間等的語言中,並且避免衝突的唯一方法是使用諸如Vulkan等C API中很常見的名稱,例如VK_ERROR_FORMAT_NOT_SUPPORTED