讀古今文學網 > 編寫高質量代碼:改善Java程序的151個建議 > 第12章 思想為源 >

第12章 思想為源

Java happens to be a really good language for a broad spectrum of topics.

Java只是碰巧成為了一門用途廣泛的優秀語言。

——James Gosling(詹姆斯·高斯林,Java的創始人)

編碼不僅僅是把代碼寫出來,還要求清晰地表達出編碼者頭腦中的邏輯,準確地傳遞到計算機中執行,同時也能夠被其他編碼者輕鬆閱讀,而要實現這些目標,則要求代碼有清晰、正確的思想,即編程思想。

編程思想是軟件誕生的源泉,當它噴湧而發時,也是優秀軟件誕生之時。

建議144:提倡良好的代碼風格

代碼的版面和樣式比較多,每個項目組基本上都有自己的編碼規範,大家都希望形成良好的代碼風格,以便提高代碼的可讀性,方便生成維護文檔,減少缺陷出現的幾率等,在Java的開發中一般都是按照《The Java Language Specification》(即《Java編碼規範》)來制定編碼規範的,但是基本上每個項目組都會有一些自己的個性特徵,我們不去評說哪一個代碼風格優秀,哪一個風格較差,而是來分析一下優秀團隊的編碼風格應該具有哪些特徵。

(1)整潔

不管代碼風格的定義有多優秀,有多適合開發人員,如果代碼結構混亂不堪,即使效率再高,也會使維護難以持續。我們知道,代碼首先是給人看的,然後才是給機器執行的,對於機器來說,只要代碼符合規範,不在乎其格式是否整潔、是否有縮進、是否有回車,只要代碼正確就能正常運行,而人就不同了,沒有縮進沒有回車的代碼基本上是不可閱讀的。試想一下一個沒有標點符號的文檔,整篇就是一個段落,能讀懂的基本上是天才(或許你會說古代的詩詞就是沒有標點符號的。確實,但它有韻律)。

(2)統一

從一個團隊中誕生的代碼應該具有一致的風格,要使用下掛式括號就全部使用下掛式括號,要使用tab縮進就全部使用tab縮進,要使用小駝峰方式命名就全部使用小駝峰方式命名,不要帶有個人色彩的風格標識。這樣可以讓我們的代碼看起來很職業,而不是一幫烏合之眾產生的「稻草」式代碼。

統一的代碼風格還要求具有連貫性,我們應該在不同的模塊、層級中使用相同的編碼風格,而不能在展現層使用一種編碼,在邏輯層又使用另外一種編碼風格。一個項目的編碼風格不應該因為所處的功能區不同而有所差異。當然,若使用多種異構語言開發項目,則可以考慮為不同的語言提供不同的規範。

(3)流行

一種潮流風行世界的時候必然有其誕生的原因(感冒也包括在內),一種編碼格式的流行也必然有它存在的理由,我們完全可以借鑒流行的編碼格式,沒有必要對這種風格進行重塑,而且使用流行風格可以讓新成員盡快融入項目,避免出現進入一個新環境而出現茫茫無助的狀態。

不要讓您的代碼規範標新立異,獨樹一幟,跟隨「風尚」也許是一種省事、省力、省心的最好編碼風格。

(4)便捷

制定出來的編碼規範必須有通用開發工具支撐,不能制定出只能由個別開發工具支持的規範,甚至是綁定在某一個IDE上。在小範圍內獨樂樂,可以提升代碼的友好度,方便使用,但很難大範圍內推而廣之,特別是很難上升到工程級別。代碼風格是為一個團隊準備的,如果團隊中就只有一個開發人員,基本上代碼風格不會有太大差異,這是習慣和個性使然,但是如果團隊中有多個成員,就需要防止給開發人員過度的自由了,不符合開發規範的代碼要堅決予以重構,以使團隊代碼風格一致。

現在的項目中源代碼逐漸增多,完全依靠人工來做代碼走查很難查出問題,我們可以使用工具來統計代碼,這裡推薦使用Checkstyle,它可以自定義代碼模板,然後根據模板檢查代碼是否遵循規範,從而減少枯燥的代碼走查。