觀文識人,代碼無疑是了解一個程序員的最佳途徑。 且不論算法思路,單就代碼的界面風格,便可知一二。 1. 追求精美的對齊。盡可能精確到每一個"斷點",是他的追求。 2.沒有tab字符,而是采用4個或8個空格鍵代替。 編輯時敲入的是tab鍵,但其編輯器會設置"文件保存時tab用空格字符替代" 為何呢,因為這樣的代碼,無論在那種編輯器上打開,都一定是對齊的。拷給別人,才不擔心形象受損。 3.空格、換行、常量替換、{}保護、還有效率。 if((long_state_var==1)||(long_state_var==2)||((ch>0x2F)&&(ch代碼,他就感覺渾身難受、頭暈惡心….. 狂吼一聲,這段代碼立馬會給改成這樣。 if ((long_state_var==1)||(long_state_var==2) \ ||((ch>0x2F)&&(ch空格也很讓人難過。 趕緊快速編輯了而下,舒了口氣。 if ( (long_state_var == 1) \ || (long_state_var == 2) \ || ((ch>0x2F) && (ch空格的美化,更有層次感。 當他開始維護這段代碼,搞清楚邏輯后,無意義的常量就會被處理成這樣的,長變量名也會被適當縮短。而0x2F、0x3A這種坑爹的的常量,則會被他心里狠狠地鄙視: “丫丫的,原創者這是在炫智商、秀優越嗎?”。 #define MODE_NAME_1 (1) /* 簡單描述模式1 */ #define MODE_NAME_2 (2) /* 簡單描述模式2 */ if ( (stat == MODE_NAME_1) || (stat == MODE_NAME_2) \ || ((ch>='0') && (ch常量。 常量的含義,通常只有原創者才知道。 如果沒有特別的說明,沒有一定的經驗,這個程序回頭在閱讀時就難以看懂。 求哪位高手來一段鮮明對比的源碼吧? 5. if 必有else,switch 必有default。 在他的程序里你不會看到一個單一的if語句,哪怕else確實什么都不需要處理,你也會看到這樣的代碼。 if (is_condition_true()) { do_something(); } else { /* do nothing */ } 因為,在多年的工作經驗中,他發現,系統的崩潰,多數死在else里面。這樣的代碼,告訴別人也告訴自己,此處的else是經過充分考慮,的確沒有需要處理的。下次自檢程序時,此處就可以快速跳過。 同樣的道理,每一個switch,其default,也是經過深思熟慮的,充分防錯。 switch (state) { case STATE_XXXX: break; case STATE_YYYY: break; ........ default: /* do nothing */ break; } |