2016-08-17 142 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