博客園新聞里面有個《讓人抓狂的代碼》
http://news.cnblogs.com/n/156507/#bottom
里面的多數都是同意的。
但是其中第一條我是堅決反對的。
1. 確保這個值等於 ture
if (someBoolean == true) {
doSomething ();
}
我其實理解作者的本意:在if語句中,本身就期待一個布爾值表達式。someBoolean變量足夠讓程序流程正確運轉。
這種不用==true的用法,在C/C++世界是一個常見現象,也是很多資深程序員用於在新手面前感覺良好的機會。
但是,軟件源碼是寫給人看的,不是寫給CPU看的。
曾幾何時,代碼是寫給CPU看的。比如機器碼,比如匯編。
到了C/C++的時代,這種資深程序員們的編碼習慣被繼承了下來。並且一定程度上成了“正確”的選擇。
但是如今已經是2012年了,編譯器的優化能力已經和上世紀50-60年代不可同日而語了!
現在軟件源碼是寫給人看的,不是寫給CPU看的。
從代碼可讀性而言,增加一個==true可以確保任何基礎程序員在閱讀代碼時候可以直白地知道源碼的設計意圖。
不需要任何背景知識,只要從英語和條件語句的基本知識就能知道“如果someBoolean為真則doSomethings”
其實,即使是在C/C++的世界里,這種寫法也是有問題的。
因為任意出現的someboolean,誰保證這一定是個boolean類型的變量?
尤其是在C#里面,不論是否寫==true。其編譯后的代碼是完全沒有區別的。
這種時候,我建議團隊領導最好將上面這種寫法作為一個范例,讓所有程序員都要去這么干。
if (someBoolean == true) {
doSomething ();
}