七點建議助您寫出優(yōu)雅的Java代碼

在每一位剛入行的程序員的心中璃哟,編寫程序都是一門神圣的藝術創(chuàng)作吗购。他們無不希望自己的代碼作品既簡潔清晰,又可讀性強冰垄,而且還具有一定的容錯能力蹬癌。本文將為您帶來七點建議和技巧,以幫助您編寫出簡潔、干練的Java代碼逝薪。其中的有些可能會讓你覺得有些不可思議隅要,但是請相信我,如下的每一條我都親身實踐過的董济。

1.使用IntelliJ IDEA作為您的集成開發(fā)環(huán)境(IDE)

雖然我已經(jīng)使用了六年的Eclipse和三年的NetBeans步清,而且我仍然偶爾會使用到它們,但是如今的大部分時間感局,我只使用IntelliJ IDEA(請詳見)尼啡。我并不是想在這里展開有關IDE的大討論暂衡,而只是想告訴您询微,IDEA能夠根據(jù)其自有的最佳整合實踐標準,持續(xù)提示您寫出更短狂巢、更好撑毛、更簡潔的代碼。

您只需要按下Alt + Enter組合鍵唧领,它就會自動開始為您工作了藻雌。在大多數(shù)時候,IntelliJ IDEA能夠為您提供各種智能且實用的代碼建議斩个。當然胯杭,您也可以向它學到不同的編程知識與技巧。

為了更好地獲取IDEA的服務性能受啥,您最好在自己的電腦上采用固態(tài)硬盤(SSD)做个。就我自己的那臺舊式筆記本電腦而言,由于使用的是傳統(tǒng)硬盤(HDD)滚局,它已無法順暢地運行IDEA了居暖。因此我個人建議您至少使用一顆256 GB大小的固態(tài)硬盤。

2.使用JDK 8或更高版本

JDK 8及其更高版本引入了諸如:lambda表達式(lambda expression藤肢,一種匿名函數(shù))太闺、功能接口、流式接口(stream APIs嘁圈,提供更為可讀的源代碼實現(xiàn)方法)等許多新的功能省骂,這些都有助于您寫出更簡短、更高性能的Java代碼最住。

當然钞澳,您并不需要去逐一地記住這些功能,因為前面提到的IDEA會幫助您在實際編程的過程中温学,實現(xiàn)這些功能與服務略贮。這也就是為什么我首先向您建議使用IDEA的原因。

3.使用Maven/Gradle

請使用Maven(一個采用純Java編寫的開源項目管理工具,請參見)或Gradle(一個基于Apache Ant和Maven的項目自動化構建工具逃延,請參見)來管理代碼中的依賴關系览妖,以及構建和部署自己的項目。

如果您已經(jīng)為許多項目建立了可復用各種基本庫揽祥,那么如果僅僅是內(nèi)部使用的話讽膏,您可以引入Nexus(一種Maven存儲庫的管理器)來進行管理。否則拄丰,您應該將它們直接部署到Maven的中央存儲庫中府树。

4.使用Lombok

是時候向setter/getter、hashcode/equals料按、以及constructors/toString等樣板式代碼(boilerplate code)說再見了奄侠,您只需要一個注解:- @Data - 就能統(tǒng)統(tǒng)搞定了。

Lombok是一款可以通過簡單的注解形式载矿,來幫助開發(fā)者簡化并消除Java代碼臃腫的工具(具體請參見)垄潮。它不但能夠減少您的代碼編寫量,還能夠幫助您打理那些生成的字節(jié)碼闷盔。

5.編寫單元測試

可測試的代碼通常意味著在組織結構上具有更合理弯洗、更簡潔的代碼質量。因為它會驅使您去事先管理好各個類之間的關系逢勾、各種方法的訪問級別牡整、以及其他方面。我甚至發(fā)現(xiàn):即使是最小的單元測試也能夠促進更快溺拱、更便捷的開發(fā)進程逃贝,進而能夠讓自己寫出更加短、平盟迟、快的Java代碼秋泳。

當然在現(xiàn)實開發(fā)工作中,您總會聽到一些諸如“我根本沒有時間來編寫單元測試”或“項目時間節(jié)點將至攒菠,不要浪費時間些單元測試了”之類的反對意見迫皱。這些聽起來貌似很合理,但是根據(jù)我的經(jīng)驗辖众,在多數(shù)情況下卓起,事實并非如此。

如果您沒有時間去編寫單元測試凹炸,那您是否有更多的時間戏阅,去修復代碼中那些可見、或不可見的bug呢?如果跳過了單元測試啤它,那些倉促完成的代碼將無法保證穩(wěn)定性奕筐。特別對于一些新的代碼變更而言舱痘,您完全無法通過及時的反饋途徑,知曉那些新產(chǎn)生的代碼是否存在著錯誤隱患离赫,是否會在將來運行的某個特定場景中產(chǎn)生不可預知的異常問題芭逝。

一般而言,Junit和TestNG是兩款非常優(yōu)秀的Java應用渊胸、及單元測試框架旬盯。而我個人則更喜歡使用TestNG。

6.重構:常見翎猛,但也很慢

簡潔干練的Java程序代碼從來不是一蹴而就的胖翰,它往往需要您進行反復地琢磨與改進。通過逐行進行代碼重構切厘、和運行各種測試用例萨咳,您可以確保自己的更改不會破壞既有代碼的正確功能。同樣迂卢,IDEA極大地提供了對于代碼重構的支持某弦,其中包括提取方法(extract method,將某個大的函數(shù)拆分為多個小函數(shù))而克、重命名、內(nèi)聯(lián)(inline)等功能怔毛。

當然员萍,如果您對代碼重構是什么,以及它的作用不太了解的話拣度,Martin Fowler的經(jīng)典著作《重構:改善既有代碼的設計(第2版)碎绎,Refactoring: Improving the Design of Existing Code (2nd Edition)》(請詳見)絕對是一本您必備的參考書。

7.定期聯(lián)絡客戶抗果,以獲取他們的反饋

最后一點筋帖,可能也是最重要的:客戶花錢讓您通過編寫代碼,來解決他們的問題冤馏、滿足他們的需求日麸、并解決他們的痛點。然而逮光,您可能在不知不覺中花費了太多的時間代箭,去實現(xiàn)自以為重要、卻對客戶無關緊要的特殊功能涕刚,進而忽略了代碼整體的健壯性和可維護性嗡综。那么,我們怎么才能夠盡早地發(fā)現(xiàn)該問題呢?請保持與客戶經(jīng)常聯(lián)系杜漠,以盡早地獲取他們的反饋极景。

話說回來察净,知易行難,即使是富有經(jīng)驗的產(chǎn)品經(jīng)理也不一定能在較短的時間內(nèi)領悟需求的真諦盼樟,何況是那些滿腦子只注重功能實現(xiàn)的“碼農(nóng)”們呢?

因此塞绿,一個實用的建議是:如果您不能直接聯(lián)絡到最終用戶的話,請盡量與該系統(tǒng)的產(chǎn)品經(jīng)理恤批、或運維人員進行禮貌异吻、且頻繁的溝通。磨刀不誤砍柴工喜庞,這些時間的投入對于后期時間的節(jié)省是絕對值得的诀浪。

總結

在過去的多年編程實踐和項目應用中,我一直受益于上述七點心得延都。在此雷猪,我希望它們也同樣能給您的代碼工作帶來幫助。祝您編程愉快!

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晰房,一起剝皮案震驚了整個濱河市求摇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌殊者,老刑警劉巖与境,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異猖吴,居然都是意外死亡摔刁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門海蔽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來共屈,“玉大人,你說我怎么就攤上這事党窜∞忠” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵幌衣,是天一觀的道長矾削。 經(jīng)常有香客問我,道長泼掠,這世上最難降的妖魔是什么怔软? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮择镇,結果婚禮上挡逼,老公的妹妹穿的比我還像新娘。我一直安慰自己腻豌,他們只是感情好家坎,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布嘱能。 她就那樣靜靜地躺著,像睡著了一般虱疏。 火紅的嫁衣襯著肌膚如雪惹骂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天做瞪,我揣著相機與錄音对粪,去河邊找鬼。 笑死装蓬,一個胖子當著我的面吹牛著拭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牍帚,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼儡遮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了暗赶?” 一聲冷哼從身側響起鄙币,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蹂随,沒想到半個月后十嘿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡糙及,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年详幽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浸锨。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖版姑,靈堂內(nèi)的尸體忽然破棺而出柱搜,到底是詐尸還是另有隱情,我是刑警寧澤剥险,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布聪蘸,位于F島的核電站,受9級特大地震影響表制,放射性物質發(fā)生泄漏健爬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一么介、第九天 我趴在偏房一處隱蔽的房頂上張望娜遵。 院中可真熱鬧,春花似錦壤短、人聲如沸设拟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纳胧。三九已至镰吆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間跑慕,已是汗流浹背万皿。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留核行,地道東北人牢硅。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像钮科,于是被迫代替她去往敵國和親唤衫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容