C++细节

来源:互联网 发布:c语言程序界面设计 编辑:程序博客网 时间:2024/05/23 16:55

收集了一些有关细节方面的知识:

1.如果要考虑跨平台,那么就需要避免使用任何的C++扩展,比如”interface”;
2.在Win32的API中使用INT_PTR, DWORD_PTR来代替 INT 或 DWORD,这样的代码具有更好移植性;
3.将”检测64位可移植性问题”设置为是。万一需要移植,hoho,省事很多阿。
4.千万不要假定指针是32位的,所以也就不要将指针转化为UINT32或INT32而是使用intptr_t,否则移植到64位你就麻烦了;
5.在数组索引或数目等地方使用size_t而不是UINT32,特别是使用stl等外部的地方;
6.指针运算采用ptrdiff_t而不是int;

7.设置”将警告视为错误”,以及4级警告。严格的警告等级绝对有好处。《debugging applications》一书给我最深的印象是保持你的程序是干净的。如果你确信哪个警告是可以忽略的那么采用#pragma warning(disable。。)来处理;
8.#pragma warning一定要使用push和pop,最好能注释一下是什么警告;
9.如果要使用全局变量一定要给自己足够的理由同时考虑多线程下会怎么样 ;
10.静态变量以及全局变量一定要被初始化,哪怕是合法的未初始化值;其实最好是初始化所有的变量;
11.请不要在头文件里使用using namespace …,需要用在cpp文件中并且写于所有的include语句之后,个人建议不要使用,在所有使用到地方都单独使用区域符,这样看代码很清晰;
12.请不要使用typedef来定义智能指针,除了你想记录键值;
13.尽量使用初始化列表,但是一定要区分初始化列表和构造函数体内初始化,他们可不仅仅是性能不一样;
14.千万不要假定初始化列表初始化的顺序,每个编译器很可能是不一样的。否则如果你的代码需要跨平台或给外部使用就可能出问题;
15.能用上const的地方都给用上,正确使用const只有好处;
16.区分引用和指针,他们给你的代码用户传递的信息是不一样的,如果你对象确保存在就用引用否则就用指针;
17.假如你写的类没有虚析构函数,那么你就不要使用protect;这样就告诉你的代码用户这不是一个可以被继承的根类;
18.不要使用C类型的强制类型转换;
19.不要使用C类型的头文件,而使用前面加C的头文件比如<cmath>,<cassert>,他们是C库的C++名字;
20.避免使用硬编码,特别是数字,定义成常量吧,宏也容易出错,一旦出错了还不容易查;

原创粉丝点击