3.成员函数的功能一定要单一;实现其功能时不要过分追求技巧,函数体也不能过长
功能单一才有利于公用。计算机是个笨蛋,老老实实的写法可能更适合它,也让别人易懂。你愿意看PageDown半天都找不着结尾的函数吗?把函数体的长度限制在200行之内吧!
交换两个整数i和j的值,方法二是不是比方法一(少用了一个变量)更简单易懂:
方法一:
i = i+j;
j = i-j;
i = i-j;
方法二:
int k = i;
i = j;
j = k;
27. BOOL变量一定要严格的赋TRUE或FALSE值;在if语句中,语义应写清楚
TRUE的定义是1,FALSE的定义是0。尽管任何一个非零值判断时被认为是“真”,但不是严格等于“TRUE”!你自己写程序时应该确认一个BOOL变量应该要么是TRUE,要么是FALSE。
int i = 10;
…
if (i)
{
}
应写为
int i = 10;
…
if (i != 0)
{
}
30. 同一指针new和delete时用的类型一定要完全一致
char* p = new char[10];
int* p1 = (int*)p;
错误的删除方法:
delete []p1; // wrong
正确的删除方法:
delete [](char*)p1; // right
或者:
delete []p; // right
31.new一个实例和多个实例时的delete方法不一样
new char[n] 和 delete []对应。
new char和delete对应。
32.实现(成员)函数时,可能需要几个小功能模块。每个小模块之间最好用{}间隔起来,以保证每个小模块之间的局部变量互不干扰,尽量避免出现各个小模块之间公用的局部变量,因为上个模块可能会在局部变量中留下下个模块不希望的值
void CMyClass::DoSomething(…)
{
int i = 0, j = 0, k = 0;
// 小功能模块1使用i, j, k
// 小功能模块2使用i, j
// 小功能模块3使用k
}
可以改为这样写:
void CMyClass::DoSomething(…)
{
{
int i = 0, j = 0, k = 0;
// 小功能模块1使用i, j, k
}