Java編程中,有哪些好的習(xí)慣從一開始就值得堅(jiān)持?

來源:http://suo.im/6hkamo
1. 規(guī)范化自己的代碼,少點(diǎn)個(gè)人風(fēng)格,多點(diǎn)通用規(guī)矩,并學(xué)會(huì)使用CheckStyle工具。
其實(shí)任何東西我們都希望它能夠“自動(dòng)化”,隨著編程經(jīng)驗(yàn)的提升,大部分編程規(guī)范你已經(jīng)了然于心,但是實(shí)際操作的時(shí)候,又總是忘這忘那,我們希望一個(gè)工具來幫我們自動(dòng)檢測(cè)我們的程序是否是符合規(guī)范,結(jié)構(gòu)良好的。
事實(shí)上,任何語言都是有自己的編程規(guī)范的,編程規(guī)范的制定,十分有利于代碼的閱讀和潛在Bug風(fēng)險(xiǎn)的降低,比如在Java中,有嚴(yán)格的命名規(guī)范:
對(duì)于類(Class)的命名,有這樣的規(guī)范:
Class names should be nouns, in mixed case with the first letter of each internal word capitalized. Try to keep your class names simple and descriptive. Use whole words-avoid acronyms and abbreviations (unless the abbreviation is much more widely used than the long form, such as URL or HTML).
類的名字必須是名詞,每個(gè)單詞的第一個(gè)字母需大寫。盡可能讓你的類名稱簡(jiǎn)潔又能傳遞清楚含義。盡量使用單詞全拼,避免同義詞或縮寫(除非縮寫使用更廣泛,比如URL, HTML等)。
比如在Java中,有嚴(yán)格的文檔規(guī)范:
/**
* Returns an Image object that can then be painted on the screen.
* The url argument must specify an absolute {@link?URL}. The name
* argument is a specifier that is relative to the url argument.
*
* This method always returns immediately, whether or not the
* image exists. When this applet attempts to draw the image on
* the screen, the data will be loaded. The graphics primitives
* that draw the image will incrementally paint on the screen.
*
*?@param??url ?an absolute URL giving the base location of the image
*?@param??name the location of the image, relative to the url argument
*?@return?? ? ?the image at the specified URL
*?@see?? ? ? ? Image
*/
public?Image getImage(URL url, String name) {
? ? ? ?try?{
? ? ? ? ? ?return?getImage(new?URL(url, name));
? ? ? ?}?catch?(MalformedURLException e) {
? ? ? ? ? ?return?null;
? ? ? ?}
}文檔是用HTML語言寫成的,前半部分是關(guān)于當(dāng)前方法或類的描述,后面需要有參數(shù)標(biāo)簽@param和返回標(biāo)簽@return,還可以加一些別的標(biāo)簽,比如@see,只有這樣,當(dāng)別人試圖引用你的程序時(shí),才能馬上明白你的某段程序是用來干嘛的,參數(shù)傳遞,返回等一目了然,要知道,實(shí)際工作中,大量的協(xié)作就意味著代碼需要高度的重用性,你必須把你的程序封裝完美,并且讓別人僅僅看你的文檔,就知道你的這個(gè)API怎么用。
上面說的僅僅是編程規(guī)范的冰山一角了,問題是,你有時(shí)會(huì)忘掉或用錯(cuò)一些規(guī)范,即便你知道它。
所以我們需要使用checkstyle插件去自動(dòng)檢測(cè)我們的程序是否符合規(guī)范。
對(duì)于Java而言,詳情請(qǐng)見:
http://checkstyle.sourceforge.net/
Github地址:
https://github.com/checkstyle/checkstyle
在各大JavaIDE中,可以直接在Eclipse Marketplace中下載:

其他的語言應(yīng)該也有自己的插件,可以自行谷歌了解。
2. 寧可變量名長(zhǎng),也不要讓變量名短得讓人無法推測(cè)其含義。
3. 在電腦里安裝兩套輸入法,編程的時(shí)候,將中文輸入法徹底關(guān)掉,確保任何快捷鍵都不會(huì)將其轉(zhuǎn)換成中文輸入法,防止中文類似符號(hào)引起混淆,比如:
中文 :();English: () ;
一點(diǎn)點(diǎn)小錯(cuò)誤,就有可能讓你多花一兩個(gè)小時(shí)在沒有意義的事上,人生苦短,盡量避免低級(jí)錯(cuò)誤。
4. 盡可能杜絕重復(fù)代碼,凡是需要用至少兩次的代碼,給它單獨(dú)做一個(gè)類或函數(shù)。
5. 避免類與類之間的內(nèi)部調(diào)用(Cycle Reference),其實(shí)也就是降低函數(shù)模塊的耦合程度。類與類之間的調(diào)用只允許通過接口,保證更改某個(gè)類的時(shí)候,其他的仍然能工作。
6. 多讀別人的優(yōu)秀代碼,拿別人的優(yōu)秀代碼和自己的代碼進(jìn)行對(duì)比,學(xué)習(xí)別人的長(zhǎng)處,吸收經(jīng)驗(yàn)。
7. 嘗試著做內(nèi)容的生產(chǎn)者,嘗試著寫一些教程或筆記,分享給社區(qū),不要只做社區(qū)內(nèi)容的吸收者,還要不斷地生產(chǎn)內(nèi)容,回饋社區(qū)給你的幫助,比如在StackOverFlow上回答別人的問題等。
8. 既要腳踏實(shí)地,也要多看看社區(qū)發(fā)生了什么新聞,有什么新的技術(shù)和軟件的發(fā)布,這些技術(shù)和軟件將怎樣影響你的開發(fā)工作,現(xiàn)在使用的IDE或Editor是否有更好的替代產(chǎn)品等等。
9. 沒有任務(wù)的時(shí)候,也不要閑下來,去開發(fā)點(diǎn)你喜歡的東西,從中挑戰(zhàn)自己,增長(zhǎng)經(jīng)驗(yàn)。
10. 不要過分依賴教程,要學(xué)會(huì)看官方文檔。凡是能被做成教程的東西,往往已經(jīng)過時(shí)了,最新的技術(shù),最新發(fā)布的標(biāo)準(zhǔn),往往沒有現(xiàn)成的教程,你需要去認(rèn)真閱讀官方文檔,那里的東西才是最權(quán)威的。
11. 不要參與語言好壞的爭(zhēng)論,人們往往偏向于喜歡自己用得熟練,用得多的那個(gè)語言,語言好壞之爭(zhēng),就和爭(zhēng)誰的女朋友漂亮一樣,我當(dāng)然覺得自己的女朋友(雖然是null)最漂亮,但是別人并不這么覺得。
12. 當(dāng)你有什么需求的時(shí)候,往往別人也有這個(gè)需求,而且往往也有了相應(yīng)的工具去解決你這個(gè)需求,比如,你想將函數(shù)的調(diào)用關(guān)系可視化,弄成樹狀圖那樣,這樣的工具已經(jīng)有了,比如SourceInsight(付費(fèi)),Source Navigator(免費(fèi))等。
13. 少在國(guó)內(nèi)的XX軟件園里下載各種破解軟件,盜版軟件等,這些軟件園為了盈利,會(huì)在你安裝的過程中,悄無聲息地給你安裝上一堆其他的流氓軟件,360首當(dāng)其沖,這些垃圾軟件,刪的越干凈越好。
14. 你的開發(fā)電腦,CPU可以差些,但內(nèi)存最好大些,推薦至少要8G,甚至推薦10G往上走,你常常需要同時(shí)打開一堆瀏覽器頁面和一個(gè)IDE甚至還有別的一堆工具,如果你做過安卓開發(fā),AndroidStudio動(dòng)輒就調(diào)用你電腦2-3G的內(nèi)存,一般的4G電腦肯定是吃不消的,嚴(yán)重降低開發(fā)體驗(yàn),但也并不是讓你換電腦,內(nèi)存條了解一下。
15. 保持一個(gè)健康,干凈的電腦狀態(tài),硬盤里的文件存儲(chǔ)要有調(diào)理,容易尋找指定文件,降低文件丟失概率,加快文件尋找速度。
16. C盤快滿了的話,可以通過Disk Manager將別的磁盤的空間送給C盤。
17. 用NetWork NotePad畫網(wǎng)絡(luò)圖表示函數(shù)調(diào)用關(guān)系(當(dāng)然你可以用別的來畫),像這樣:

這是前兩天編一個(gè)FlappyBird時(shí)草草畫的圖,雖然簡(jiǎn)陋,但有用。
18. 可以考慮用一個(gè)電腦架子,防止烏龜頸,保護(hù)頸椎。

19. 下載一個(gè)護(hù)眼寶,保護(hù)視力。

20. 多看Java團(tuán)長(zhǎng)公眾號(hào)里的文章,但不要做一個(gè)不點(diǎn)贊的冷漠青年。

