這節(jié)包含一些雜項:‘做'與'不做'柑晒。
不要通過宏替換來改變語法缴守。這將導致程序?qū)τ谒腥硕际请y以理解的,除了那個肇事者题篷。
不要在需要離散值的地方使用浮點變量词身。使用一個浮點數(shù)作為循環(huán)計數(shù)器無疑是搬起石頭砸自己的腳》叮總是用<=或>=測試浮點數(shù)法严,對它們永遠不要 用精確比較(==或!=)。
編譯器也有bug葫笼。常見且高發(fā)的問題包括結(jié)構(gòu)體賦值和位字段深啤。你無法泛泛的預測一個編譯器都有哪些bug。但你可以在程序中避免使用那些已知的在所有編譯 器上都存在問題的結(jié)構(gòu)路星。你無法讓你寫的任何代碼都是有用的溯街,你可能仍然會遇到bug,并且在這期間編譯器很可能會被修復洋丐。因此呈昔,只有當你被強制使 用某個特定的充斥bug的編譯器時,你才應該"圍繞"著編譯器bug寫代碼友绝。
不要依賴自動代碼美化工具堤尾。良好代碼風格的主要受益者就是代碼的編寫者,并且尤其在手寫算法或偽代碼的早期設計階段迁客。自動代碼美化工具只應該用在那些已經(jīng) 完成郭宝、語法正確并且此后不能滿足當空白和縮進被更為關注的要求時。伴隨著對細致程序員的細節(jié)的關注掷漱,對于那些將函數(shù)或文件布局解釋清楚的工作粘室,程 序員們會做得更好(換句話說,一些視覺布局是由意圖而不是語法決定的卜范,美化工具無法了解到程序員的思想)衔统。粗心的程序員應該學習成為一個細致的程 序員,而不是依賴美化工具讓代碼可讀性更好。
-
意外地遺漏邏輯比較表達式中的第二個=是一個常犯的問題缰冤。使用顯式測試犬缨。避免對賦值使用隱式測試。
abool = bbool; if (abool) { ...
當嵌入的賦值表達式使用時棉浸,確保測試是顯式的怀薛,這樣后續(xù)它就無法被"修復"了。
while ((abool = bbool) != FALSE) { ...
while (abool = bbool) { ... /* VALUSED */
while (abool = bbool, abool) { ...
顯式地注釋那些在正趁灾#控制流之外被修改的變量枝恋,或其他可能在維護過程中中斷的代碼。
現(xiàn)代編譯器會自動將變量放到寄存器中嗡害。對于你認為最關鍵的變量慎用寄存器焚碌。在極端情況下,用寄存器標記2-4個最為關鍵的值霸妹,并且將剩余的標記為 REGISTER十电。后者在那些具有較多寄存器的機器上可以#define為寄存器。