C++ Coding Standards:类型安全

原创 2005年05月31日 17:38:00

By Herb Sutter, Andrei Alexandrescu

树人 译

类型安全

90.      避免使用类型转换,优先使用多态。

关闭转换:避免通过转换一个对象的类型来定制行为。通过模板和虚拟函数机制,让类型(而不是类型的调用代码)来决定其自身的行为。

91.      依赖于类型,而不是表示法。

不要尝试X射线对象:不要去假设对象在内存中是如何表示的。让类型自身来决定如何从内存中写入和读取其对象。

92.      避免使用reinterpret_cast

谎言是站不住脚的:不要试图用reinterpret_cast来迫使编译器把一种类型的对象重新解释成一种不同类型的对象。这是和维护类型安全机制相对立的,而且reinterpret_cast甚至不能保证做这样或那样的行为。

93.      避免对指针使用static_cast

不能static_cast来转换指向动态对象的指针:从使用dynamic_cast到重构再到重新设计都是一个安全的替换策略。

94.      避免去除const限定。

Some fibs are punishable:去除const限定往往会产生未定义的行为,即使这样做是合法的,它都是一类不良的程序设计风格。

95.      不要使用C风格的强制转换。

时间不能完全:C风格的强制转换依赖于不同上下文有着不同的(往往还是危险)语义,而这些“伪装”都隐藏在一个单一的语义后面。用C++风格的强制转换来代替C风格的,这样可以防止意外的错误。

96.      不要对非POD(Plain Old Data)进行memcpymemcmp操作。

不要尝试X射线对象:不要使用memcpymemcmp来拷贝和比较任何较原始内存更结构化一些的东西。

97.      不要使用联合来重新解释表示法(实体)。

本性难移:联合可以被滥用成“没有转换的转换”,写入一个成员而读取另一个成员。这比reinterpret_cast更阴险和难以预测。

98.      不要使用可变参数()。

省略号()会导致崩溃:它从C中沿袭下来的危险。避免使用可变参数,使用更高级别的C++构造和程序库来替代它。

99.      不要使用无效对象。不要使用不安全的函数。

不要使用过期药品:无效对象和历史的但不安全的函数会严重影响程序的“健康”。

100.  不要多态地处理数组。

数组是ill-adjusted:多态地处理数组是一种严重的类型错误,而编译器可能不会察觉。不要掉到这个陷阱中去。

转:C++ Coding Standards

/*************************************************************************Scripts of C++ Coding Stan...
  • bat603
  • bat603
  • 2006年12月19日 16:42
  • 2591

【C/C++】什么是类型安全

什么是类型安全 转自:http://hi.baidu.com/chenfalei/blog/item/f33ac0133500ac21dd540186.html 编程语言的最终梦想:静...
  • LG1259156776
  • LG1259156776
  • 2016年10月04日 10:25
  • 1704

史上最全代码风格大全!!!Coding Style Conventions and Standards

Coding Style Conventions and Standards A curated list of Coding Style Conventions and Standards. ...
  • xkzju2010
  • xkzju2010
  • 2015年08月31日 16:46
  • 1495

C++ Coding Standards and Practices

Coding practices should be in place to maintain a consistancy among software projects to enforce a d...
  • hf_yang97
  • hf_yang97
  • 2010年03月08日 17:44
  • 104

《C++ Coding Standards》读书笔记

1.二元操作符    一般而言,对于二元操作符@(如+、-、*、=等),应该定义有两种形式:operator @和operator @=,对应于两种形式的表达式:a @ b 和 a @= b。通常,都...
  • virtualdesk
  • virtualdesk
  • 2010年04月09日 20:41
  • 1083

C++ Coding Standards:序言

By Herb Sutter, Andrei Alexandrescu 著树人译序言及早地墨守成规:用相同的方法处理相同的过程。积累惯用法。标准化。你和莎士比亚之间的唯一差别就是习语表的长度,而不是词...
  • arha
  • arha
  • 2005年05月16日 14:58
  • 823

C++ Coding Standards

1:Correctness, simplicity, and clarity come first 2:Make interfaces easy to use correctly and hard t...
  • zhouchuan15
  • zhouchuan15
  • 2010年08月30日 17:49
  • 424

转贴 C++ Coding Standards

C++ Coding Standards$Organizational and Policy Issues0. Don’t sweat the small stuff. (Or: Know what ...
  • diclogic
  • diclogic
  • 2005年04月07日 13:03
  • 414

C++ Coding Standards Bibliography

http://www.gotw.ca/publications/c++cs/bibliography.htmThis is a copy of the Bibliography from C++ Co...
  • gzdicklee
  • gzdicklee
  • 2005年12月30日 17:55
  • 1003

C++不是类型安全的语言

在C++语言中,下列说法正确的是: 正确答案: D   你的答案: 空 (错误) inline函数表示编译器一定会将函数体直接插入到调用此函数的地方,这样可以加快程序的运行速度...
  • chengonghao
  • chengonghao
  • 2016年07月20日 21:34
  • 1946
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ Coding Standards:类型安全
举报原因:
原因补充:

(最多只允许输入30个字)