15

我正在与一群其他程序员一起开发一个使用 C++ 和 Qt 构建的开源项目。

现在,我们需要一个小部件(以及其他一般变量)的命名约定,以便在我们所有的代码中使用它作为标准,这样代码就具有更好的可读性,并且我们可以在程序员之间获得更好的协调。

有什么建议吗?

编辑:我不是在谈论命名新课程,

相反,我在谈论 Qt Widgets 的命名实例,假设我对用户名进行了文本编辑,我应该将其命名为 txtEdtUsrNm 吗?

在那种情况下,我应该如何选择派生?

4

5 回答 5

17

只要您按照这些思路思考,我就会从头到尾阅读这篇 QtQuarterly 文章。

设计 Qt 风格的 C++ API

也就是说,我们要做的一件事是将实例的“使用”作为第一部分,将类的最后一个完整单词作为最后一部分。

所以,你的“用户名” QTextEdit 是

QTextEdit * userNameEdit = new QTextEdit(this);

如果有歧义,例如 QListView 和 QTreeView,则选择最后一个明确的部分。

QListView * userListView;

您可以根据自己的喜好找出缩写词(例如 QLabel 的“Lbl”),但一般来说,整个单词都有效且易于阅读。

另一方面,我们对此并不太严格,在没有类名的情况下命名实例变量的意图可能更重要,因为如果将来要更改类,则可以更改名称在没有好的重构工具的情况下,这是一种痛苦。

也许找出您最常使用的通用小部件,并为最通用的超类选择一个命名约定,然后让其他一切都过去。

遵守约定的示例列表:

  • layout = 所有以“Layout”结尾并继承 QLayout 的类
  • button = 所有以“Button”结尾并继承 QAbstractButton 的类

QAbstract ClassName类是思考该列表中应该包含什么内容的好地方。

于 2008-12-31T23:11:01.957 回答
2

由于 Qt 对第三方开发人员开放,他们提供了一些关于编码风格和 API 设计原则的文档。

这些文件真的很有趣。这里有几个链接:

Wiki : Qt 编码风格

维基:API设计原则

还有这份来自 Jasmin Blanchette 的文档(PDF),值得一读:API 设计小手册

于 2009-07-22T12:26:36.587 回答
1

我会使用与 Qt 相同的命名约定。让自己轻松一点。

它们的命名约定类似于 java。

于 2008-12-31T05:13:21.147 回答
1

全名很快就会变得难以阅读和输入,因此我们通常使用缩写:

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

(你得到了漂移)。是的,有一些歧义,但它们通常是从上下文中解决的。

于 2009-07-21T17:11:46.287 回答
0

确切地说,问题是关于“命名 Qt Widgets 的实例”,但答案是关于命名保存对小部件实例的引用的变量。

Qt Widgets 派生自 QObject,它有一个带有 getter objectName() 的 name 属性。如果程序员不给这个属性一个值,Qt 是否会给它一个值?称其为“自动生成”或“默认”值。

于 2012-05-30T01:22:37.017 回答