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