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), 認真寫好這個邏輯
而我沒有這個"良好"的習慣的時候, 那麼我的大腦裏面只需要記一件事,無論常量和變量,只需要“認真寫好這個邏輯”。