1、变量使用前一定要初始化.
例一
int *p = NULL;
p = new int[10]; // 既然都一定要给它申请了,前面那个赋NULL是啥意义?纯属多余,同理还有释放的时候。
例二
WCHAR filename[MAX_PATH];
memset(filename, 0, sizeof(filename));
GetModuleFileName(NULL, filename, sizeof(filename) / sizeof(filename[0]));
// memset纯属多余, 甚至还有在每次recv之前都memset的,这是典型的字符串思维,会降低程序执行效率。有人还给我解释说如果不memset,那么GetModuleFileName失败之后则得到错误的字符串。这不是瞎扯?为什么不判断GetModuleFileName的返回值呢?微软的例子也经常不初始化不需要初始化的空间。死记一种方法而不是问为什么,不是好方法。
2、逻辑判断的时候常量写在变量前。
这样的话,如果是比较两个常量呢?比较两个变量呢?那么大脑里面需要记至少两件事。
A、if (10 == i), 把常量写在前面
B、if (j == i), 认真写好这个逻辑
而我没有这个"良好"的习惯的时候, 那么我的大脑里面只需要记一件事,无论常量和变量,只需要“认真写好这个逻辑”。