我正在与一群其他程序员一起开发一个使用 C++ 和 Qt 构建的开源项目。
现在,我们需要一个小部件(以及其他一般变量)的命名约定,以便在我们所有的代码中使用它作为标准,这样代码就具有更好的可读性,并且我们可以在程序员之间获得更好的协调。
有什么建议吗?
编辑:我不是在谈论命名新课程,
相反,我在谈论 Qt Widgets 的命名实例,假设我对用户名进行了文本编辑,我应该将其命名为 txtEdtUsrNm 吗?
在那种情况下,我应该如何选择派生?
我正在与一群其他程序员一起开发一个使用 C++ 和 Qt 构建的开源项目。
现在,我们需要一个小部件(以及其他一般变量)的命名约定,以便在我们所有的代码中使用它作为标准,这样代码就具有更好的可读性,并且我们可以在程序员之间获得更好的协调。
有什么建议吗?
编辑:我不是在谈论命名新课程,
相反,我在谈论 Qt Widgets 的命名实例,假设我对用户名进行了文本编辑,我应该将其命名为 txtEdtUsrNm 吗?
在那种情况下,我应该如何选择派生?
只要您按照这些思路思考,我就会从头到尾阅读这篇 QtQuarterly 文章。
也就是说,我们要做的一件事是将实例的“使用”作为第一部分,将类的最后一个完整单词作为最后一部分。
所以,你的“用户名” QTextEdit 是
QTextEdit * userNameEdit = new QTextEdit(this);
如果有歧义,例如 QListView 和 QTreeView,则选择最后一个明确的部分。
QListView * userListView;
您可以根据自己的喜好找出缩写词(例如 QLabel 的“Lbl”),但一般来说,整个单词都有效且易于阅读。
另一方面,我们对此并不太严格,在没有类名的情况下命名实例变量的意图可能更重要,因为如果将来要更改类,则可以更改名称在没有好的重构工具的情况下,这是一种痛苦。
也许找出您最常使用的通用小部件,并为最通用的超类选择一个命名约定,然后让其他一切都过去。
遵守约定的示例列表:
QAbstract ClassName类是思考该列表中应该包含什么内容的好地方。
由于 Qt 对第三方开发人员开放,他们提供了一些关于编码风格和 API 设计原则的文档。
这些文件真的很有趣。这里有几个链接:
还有这份来自 Jasmin Blanchette 的文档(PDF),值得一读:API 设计小手册
我会使用与 Qt 相同的命名约定。让自己轻松一点。
它们的命名约定类似于 java。
全名很快就会变得难以阅读和输入,因此我们通常使用缩写:
QLabel * fooLB;
QPushButton * fooPB;
QTextEdit * fooTE;
QSpinBox * fooSB;
(你得到了漂移)。是的,有一些歧义,但它们通常是从上下文中解决的。
确切地说,问题是关于“命名 Qt Widgets 的实例”,但答案是关于命名保存对小部件实例的引用的变量。
Qt Widgets 派生自 QObject,它有一个带有 getter objectName() 的 name 属性。如果程序员不给这个属性一个值,Qt 是否会给它一个值?称其为“自动生成”或“默认”值。