2009年1月18日 星期日

if condition

在寫if condition或是其他一些condition時,一般人習慣的寫法是:
if(a==0) {
// do something
}
通常是左手邊變數,右手邊常數。不過寫C/C++最常犯的bug之一,就是相等比較的2個=常常會不小心少寫一個=寫成assignment的一個等於。如下
if(a=0) {
// do something
}
這可是差很多的! 由於在語法上完全合法,所以並不會有compile error。有些compiler會吐warning出來,但是有些不會。忽略這個錯誤將會造成debug時的痛苦...

下面的coding小技巧可以幫助避免這樣的事情發生,我們只要將上面那段code改成
if(0==a) {
// do something
}
將左右手邊對調,左手邊是常數,右手邊是變數,這樣不小心寫成一個=時,一定會有compile error被report。雖然這樣寫剛開始會很不習慣就是了。
另一個好處就是,常數通常都很短,但變數命名通常都較長,這樣寫會有另一種alignment的美感,可以試著體會看看 :)

沒有留言: