Qt 编码惯例
原文链接:http://developer.qt.nokia.com/wiki/Coding_Conventions
翻 译:wd007 XChinux
审 校:齐 亮
鸣 谢:dbzhang800 yafeilinux 提供博客格式以及部分内容审校的意见
◆ C++ 特性
■ 不要使用异常
■ 不要使用
rtti(运行时类型识别;主要包括,
typeinfo结构,
dynamic或者
typeid操作符,包括抛出异常等)
■ 慎明的使用模板类,只有当必需时才使用它,而不是仅仅因为你掌握了它的使用方法。
提示:使用编译器的自动测试功能来确定某个C++特性是否被支持。
◆ Qt源代码书写惯例
![]() |
■ 所有代码都仅仅使用
ascii格式(
7位字符,如果不确定,则可以运行
man ascii来验证 )
● 原理:我们已经有了太多的新的语系作品以及UTF-8和Latin1混合的不健壮的系统。当你在喜欢使用的编辑器中使用字符位数大于127的系统时,往往还没有来得及保存,系统就会崩溃掉。
● 对于字符串:使用/nnn(这里nnn是八进制的字符,在任何系统中都可以代表你要输入的字符)或者使用/xnn(这里xnn是十六进制的字符)。
举例:
QString s = QString::fromUtf8(”/213/005”);
● 对于文档中的变音,或者其他非ASCII的字符,或者使用qdoc的unicode命令或者使用适当的宏;举例:对ü使用/uuml。
■ 所有
QObject的子类都必须包含一个
Q_OBJECT的宏,即便它并没有使用信号或者槽,否则的话,
qobject_cast就会运行失败。
■ 在连接语句中,规范化信号和槽中的参数(可以查看
QMetaObject::normalizedSignature以获得规范化的信息)以获得更快速的信号/槽遍历。你也可以使用
$QTDIR/util/normalize来规范已有的代码
◎ 包含的头文件
![]() |
■ 在公用的头文件中,头文件包含总是使用这样的形式:
#include <QtCore/qwhatever.h>
对于
Mac OS X系统框架而言,
QtCore这样的库前缀是必需的