Qt 类命名方式背后的基本原理是什么?
我想知道为什么 Qt 在每个类名之前使用 Q,而不是将所有内容都放在命名空间中。是否有任何特殊原因,例如使名称易于搜索,或者只是关于品牌名称?
I am wondering why Qt uses Q before every class name rather than putting everything in a namespace. Is there any particular reason, such as making the names easy to search for, or is it just about brand names?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我相信这是历史性的。命名空间于 1995 年左右被引入 C++。Qt 开发于 1991 年开始,因此显然不能使用命名空间。
I believe it is historical. Namespaces were introduced into C++ around 1995. Qt development started in 1991 so namespaces could not be used, obviously.
这可能是一个可移植性问题。并非每个编译器都支持命名空间,因此命名约定有助于减少命名冲突。
It may be a portability issue. Namespaces weren't / aren't supported by every compiler, so the naming convention helps to cut down on naming clashes.
Qt 的文档引用了 命名空间,尽管我没有检查代码来查看如果它们确实是 C++ 命名空间,或者是在类内使用公共声明的 hack。我猜其余的人试图避免导致每个人都需要重命名所有内容,尽管他们可以根据需要提供迁移路径,如下所示:
The documentation for Qt refers to namespaces, although I didn't check the code to see if they are truly c++
namespace
s or a hack with public declarations inside a class. I would guess that the rest is trying to avoid causing everybody to need to rename everything, although they could provide a migration path if they wanted to, like so:Qt 对于它使用的 C++ 语言特性非常保守。无命名空间、例外或 RTTI。另请参阅这篇文章,详细说明了为什么在信号/槽处理中不使用模板。
Qt is very conservative on the C++ language features it uses. No namespaces, exceptions or RTTI. See also this article detailing why templates are not used in signal/slot handling.
鉴于没有一个 C++ 编译器不实现命名空间,现在只有一个原因:品牌:)
Seeing as there's not a single C++ compiler left that doesn't implement namespaces, nowadays there's only one reason: Branding :)
Qt 使用 Q 前缀作为其编码风格的一部分。它通常的目的是使代码更容易阅读并发现是什么。
具有以下特征的标识符:
采用编码风格并统一使用它可以让其他人更容易理解他们的代码没有写。
参考:Qt 编码风格
Qt uses a Q prefix as part of their coding style. It usually serves the purpose of making it easier to read the code and spot what is what.
An identifier that:
Adopting a coding style and using it uniformly makes it much easier for other people to understand code they didn't write.
Ref.: Qt Coding Style