Qt编码标准与编程惯例修改稿2改_LiveWritter版.pdf

Qt编码标准与编程惯例修改稿2改_LiveWritter版.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Qt编码标准与编程惯例修改稿2改_LiveWritter版

Qt编程惯例 翻 译:wd007 XChinux 审 校:齐 亮 ◆ C++ 特性 ■ 不要使用异常 ■ 不要使用rtti(运行时类型识别;主要包括,typeinfo结构,dynamic或者typeid 操作符,包括抛出异常等) ■ 慎明的使用模板类,只有当必需时才使用它,而不是仅仅因为你掌握了它的使用 方法。 提示:使用编译器的自动测试功能来确定某个C++特性是否被支持。 ◆ Qt源代码书写惯例 ■ 所有代码都仅仅使用ascii格式(7位字符,如果不确定,则可以运行manascii 来验证 ) ● 原理:我们已经有了太多的新的语系作品以及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这样的库前缀是必需的,这样的写法对非qmake 项目也是非常便利的 ■ 在源文件中,先包含特定的头文件,再包含常用的头文件(如系统文件) 举例: #include qstring.h // Qt 的类 #include new // 标准模板库中的模块 #include limits.h // 系统文件 ■ 如果要包含qplatformdefs.h,总是第一个包含它 ■ 如果要包含qt_x11_p.h,总是最后一个包含它 ◎ 强制转换 ■ 避免使用 C 风格的转换,使用 C++风格的转换(static_cast, const_cast, reinterpret_cast) ● 原理:reinterpret_cast以及C风格的转换都是危险的,但好在前者在转换过 程中并不去掉const修饰符 ■ 不要使用dynamic_cast,对QObject及其子类对象使用qobject_cast或者重构你 的设计,例如引入一个type()方法(参考QListWidgetItem) ■ 对于简单的变量类型转换,使用构造函数实现。注意形式是:int(myFloat)而不是 (int)myFloat ● 原理:当重构代码时,编译器会立即告诉开发者这种转换是否会带来危险 ◎ 编译器/平台特定问题 ■ 当使用有疑问的操作符时,要格外的小心。如果返回值类型不一致,某些编译器生 成的代码在运行时会崩溃(你甚至不会得到编译器给出的警告信息) QString s; return condition ? s : ”nothing”; //运行时崩溃 ■ 对字节对齐问题要格外的小心 ● 无论何时,进行一个指针转换以致于需要目标进行对齐而导致字节增加,其结 果可能致使在某些系统架构上运行时产生崩溃。举个例子,如果一个 const char *类型转 换为一个cons

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档