一、致读者
  1. 
在编程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能地直接反映这些思想:
   ★.如果你能把“它”看成一个独立的概念,就把它做成一个类。
   ★.如果你能把“它”看成一个独立的实体,就把它做成某个类的一个对象。
   ★.如果两个类有共同的界面,将此界面做成一个抽象类。
   ★.如果两个类的实现有某些显著的共同东西,将这些共性做成一个基类。
   ★.如果一个类是一种对象的容器,将它做成一个模板。
   ★.如果一个函数实现对某容器的一个算法,将它做成为对一族容器可用的模板函数。
   ★.如果一组类、模板等相互之间有逻辑联系,将它们放进一个名字空间里。
   2. 
在你定义一个并不是实现某个像矩阵或复数这样的数学对象的类时,或者定义一个低层的类型如链接表的时候:
   ★.不要使用全局数据(使用成员)。
   ★.不要使用全局函数。
   ★.不要使用公用数据成员。
   ★.不要使用友元,除非为了避免a或c。
   ★.不要在一个类里面放“类型域”(指那种为了说明一个类所存储数据的情况而放置的标志域) 
;采用虚函数。
   ★.不要使用内联函数(inline function),除非作为效果显著的优化。
二、C++ 概览
  1. 
不用害怕,一切都会随着时间的推移而逐渐明朗起来。
  2. 你并不需要在知道了C++的所有细节之后才能写出好的C++程序。
   3. 
请特别关注程序设计技术,而不是各种语言特征。
三、标准库概览
  1. 不要像重新发明车轮那样企图做每件事;去使用库。
  2. 
不要相信奇迹;要理解你的库能做什么,它们如何做,它们做时需要多大的代价。
  3. 当你遇到一个选择时,应该优先选择标准库而不是其他的库。
  4. 
不要认为标准库对于任何事情都是最理想的。
  5. 切记#include 你所用到的功能的头文件。
  6. 
记住,标准库的功能定义在名字空间std之中。
  7. 请用string,而不是char*。
  8. 
如果怀疑,就用一个检查区间范围的向量(例如Vec)。
  9. vector<T> 、list<T>和 
map<key,value> 都比T[] 好。
  10. 如果向一个容器中添加一个元素,用push_back() 或 
back_inserter()。
  11. 采用对vector的push_back(),而不是对数组的realloc()。
  12. 
在main()中捕捉公共的异常。
四、类型和声明
  1. 保持较小的作用域。
  2. 
不要在一个作用域和它外围的作用域里采用同样的名字。
  3. 在一个声明中只声明一个名字。
  4. 
让常用的和局部的名字比较短,让不常用的和全局的名字比较长。
  5. 避免看起来类似的名字。
  6. 维持某种统一的命名风格。
  7. 
仔细选择名字,反映其意义而不是反映实现方式。
  8. 如果所用的内部类型表示某种可能变化的值,请用typedef 
为它定义一个有意义的名字。
  9. 用typedef为类型定义同义词,用枚举或类去定义新类型。
  10. 
切记每个声明中都必须描述一个类型(没有“隐式的int”)。
  11. 避免有关字符数值的不必要假设。
  12. 
避免有关整数大小的不必要假设。
  13. 避免有关浮点类型表示范围的不必要假设。
  14. 优先使用普通的int 而不是short int 
或者long int。 
  15. 优先使用double 而不是float 或者long double。
  16. 优先使用普通的 char 
而不是 signed char或者 unsigned char。 
  17. 避免做出有关对象大小的不必要假设。
  18. 
避免无符号算术。
  19. 应该带着疑问去看待从signed 到unsigned ,或者从unsigned 到signed 的转换。
  20. 
应该带着疑问去看待从浮点到整型的转换。
  21. 应该带着疑问去看待向较小类型的转换,如将int转换到char。
五、忠告
  1. 
避免非平凡的指针算术。
  2. 当心,不要超出数组的界线去写。
  3. 尽量使用0而不是NULL。
  4. 尽量使用vector 
和valarray ,而不是内部(C风格)的数组。
  5. 尽量使用string而不是以0结尾的char 数组。
  6. 
尽量少用普通的引用参数。
  7. 避免 void*,除了在某些底层代码里。
  8. 
避免在代码中使用非平凡的文字量(“神秘的数”)。相反,应该定义和使用各种符号常量。(这里应理解为避免使用无意义的立即数,而定义一些能够代表意义的常量,例如,用true而不要用1(C/C++)或-1(VB))

由于几方面的原因,宏已经成为讨厌、恶心、杂乱的混合体,其中最主要的原因在于它们被吹捧为一种文本替换设施,其效果在预处理阶段就产生了,而此时C++的语法和语义都还没有起作用。
我讨厌大多数形式的预处理器和宏。C++的目标之一就是使C的预处理器成为多余的,因为我认为其操作天生就容易出错。
关于宏的第一规则就是:不要使用它,除非不得不用。几乎每个宏都说明程序设计语言、程序或者程序员存在缺陷。
 
http://www.cnblogs.com/lfsblack/p/3274682.html

Bjarne Stroustrup语录2(一些C++使用注意点)的更多相关文章

  1. Bjarne Stroustrup语录2

    一.致读者  1. 在编程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示.让程序的结构尽可能地直接反映这些思想:   ★.如果你能把“它”看成一个独立的概念,就把它做成一个类.    ...

  2. Bjarne Stroustrup 语录1

    1. 请谈谈C++书.  没有,也不可能有一本书对于所有人来说都是最好的.不过对于那些真正的程序员来说,如果他喜欢从“经典风格”的书中间学习一些新的概念和技术,我推荐我的The C++ Program ...

  3. C++之父Bjarne Stroustrup提供的关于异常处理的建议

    节选自<The C++ Programming Language> ——C++之父Bjarne Stroustrup          1. Don’t use exceptions wh ...

  4. What books does Bjarne Stroustrup suggest to master C++?

    QUESTION : What books does Bjarne Stroustrup suggest to master C++? ANSWER: A Tour of C++ is a quick ...

  5. Bjarne Stroustrup announces C++ Core Guidelines

    This morning in his opening keynote at CppCon, Bjarne Stroustrup announced the C++ Core Guidelines ( ...

  6. 向C++之父Bjarne Stroustrup致敬

    2013-04-25 21:30 (分类:社会人生) 非常好的文章 C ++ 的 背 影                                     ——C++之父Bjarne Strou ...

  7. Bjarne Stroustrup对C++程序员的忠告

    转自:http://blog.csdn.net/adm_qxx/archive/2007/05/20/1617488.aspx  第1章 致读者  [1] 在编写程序时,你是在为你针对某个问题的解决方 ...

  8. The C++ Programming Language - Bjarne Stroustrup

    Preface Part 1: Introduction 1.1 The Structure of This Book 1.1.1 Introduction 1.1.2 Basic Facilitie ...

  9. 【Java】Java_01初步

    1.编程语言的发展史和发展主线 计算机语言如果你将它当做一个产品,就像我们平时用的电视机.剃须刀.电脑.手机等, 他的发展也是有规律的. 任何一个产品的发展规律都是:向着人更加容易使用.功能越来越强大 ...

随机推荐

  1. 魔兽争霸war3心得体会(一):UD的冰甲蜘蛛流

    玩war3好几年了,之前都是打打电脑,随便玩玩的.刚刚在浩方等平台上和人玩的时候,各种被虐,很难赢一局.从去年开始,才认真玩.思考下各种战术. 最初,使用的是兽族orc,后来觉得兽族不够厉害,玩到对战 ...

  2. Qt信号槽传递自定义类型参数(qRegisterMetaType)

    1 #include <QMetaType>//记得包含这个头文件 2 //my_type是我自己定义的类型 3 qRegisterMetaType<my_type>(&quo ...

  3. ZOJ 3168 Sort ZOJ7 水

    再水一发,舍友肿么还在睡T T. ---------------------------------舍友还在睡觉的分割线--------------------------------- http:/ ...

  4. eclipse设置jvm

    设置参数: -Xverify:none -Xms512m -Xmx512m -Xmn128m -XX:PermSize=96m -XX:MaxPermSize=96m -XX:+UseConcMark ...

  5. 使用Perl处理Excel之DMA映射

    使用Perl处理Excel之DMA映射 功能 通道处理,将各个通道的外设映射到通道上 外设ack信号处理 脚本执行情况 顶层Perl脚本(dma_parse.pl) 将上述两个功能脚本整合,便于调用 ...

  6. Facebook Hacker Cup 2015 Round 1--Winning at Sports(动态规划)

    原题:pid=688426044611322&round=344496159068801">https://www.facebook.com/hackercup/problem ...

  7. jquery-10 jquery中的绑定事件和解绑事件的方法是什么

    jquery-10 jquery中的绑定事件和解绑事件的方法是什么 一.总结 一句话总结:bind(); unbind(); one(); 1. jquery中的绑定事件和解绑事件的方法是什么? bi ...

  8. IIS服务器能支持10万并发

    服务器能支持10万并发由于一个项目的访问量越来越大,从原来的几百个,增加到现在50多万个每天,所以阿里的服务器也扛不住了,于是就想办法,查了N多资料,总结了以下方法,才解决这问题,每天一共访问量50多 ...

  9. php实现 简单密码(代码颜色变化)

    php实现  简单密码(代码颜色变化) 一.总结 一句话总结:写代码的时候一定要关注代码的颜色变化,不然低级错误害死人.常量变量会有不同颜色,所以$str少$符号变成常量的时候很容易发现. 1.变量$ ...

  10. 基于 MySQL 5.6 keepalived的双主搭建

    环境介绍: 说明 IP 节点1 192.168.56.56 节点2 192.168.56.57 w_ip 192.168.56.6 安装keepalived tar -zxvf keepalived- ...