BjarneStroustrup对C++程序员的忠告(BjarneStroustrup语录).doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:14 大小:63KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

BjarneStroustrup对C++程序员的忠告(BjarneStroustrup语录).doc

BjarneStroustrup对C++程序员的忠告(BjarneStroustrup语录).doc

预览

免费试读已结束,剩余 4 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

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