蘭州IT培訓
美國上市IT培訓機構

0931-4903018

熱門課程

讓你的代碼優雅起來:Java代碼優化的10點建議

  • 時間:2020-03-13 18:19
  • 發布:蘭州
  • 來源:達內新聞

達內蘭州java培訓機構為大家準備了《Java開發入門教程》和資料,感興趣的同學填寫資料領取哦!

編寫程序都是一門神圣的藝術創作。好的代碼作品既簡潔清晰,又可讀性強,而且還具有一定的容錯能力,讓人看起來賞心悅目。代碼不是為了實現基本的需求,它更能體現開發者的編碼水平和工作能力。

今天,達內蘭州java培訓機構就帶大家一起學習一下,如何能使自己的代碼優雅起來。

使用IntelliJ IDEA(IDE)

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

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

盡量重用對象

比如:String 對象的使用中,出現字符串連接情況時應用StringBuffer 代替。由于系統不僅要花時間生成對象,以后可能還需花時間對這些對象進行垃圾回收和處理。因此,生成過多的對象將會給程序的性能帶來很大的影響。

盡量使用局部變量

調用方法時傳遞的參數以及在調用中創建的臨時變量都保存在棧(Stack)中,速度較快。

其他變量,如靜態變量、實例變量等,都在堆(Heap)中創建,速度較慢。

使用JDK 8或更高版本

JDK8及其更高版本引入了諸如:lambda表達式(lambda expression,一種匿名函數)、功能接口、流式接口(stream APIs,提供更為可讀的源代碼實現方法)等許多新的功能,這些都有助于您寫出更簡短、更高性能的Java代碼。

當然,您并不需要去逐一地記住這些功能,因為前面提到的IDEA會幫助您在實際編程的過程中,實現這些功能與服務。

這也就是為什么我首先向您建議使用IDEA的原因。如果您感興趣,也可以參考《Java8實戰,Java8 in Action》一書。

使用Maven/Gradle

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

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

使用Lombok

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

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

編寫單元測試

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

當然在現實開發工作中,您總會聽到一些諸如“我根本沒有時間來編寫單元測試”或“項目時間節點將至,不要浪費時間寫單元測試了”之類的反對意見。這些聽起來貌似很合理,但是根據我的經驗,在多數情況下,事實并非如此。

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

重構:常見,但也很慢

簡潔干練的Java程序代碼從來不是一蹴而就的,它往往需要您進行反復地琢磨與改進。通過逐行進行代碼重構、和運行各種測試用例,您可以確保自己的更改不會破壞既有代碼的正確功能。

同樣,IDEA極大地提供了對于代碼重構的支持,其中包括提取方法(extract method,將某個大的函數拆分為多個小函數)、重命名、內聯(inline)等功能。

定期聯絡客戶,獲取反饋

客戶花錢讓您通過編寫代碼,來解決他們的問題、滿足他們的需求、并解決他們的痛點。然而,您可能在不知不覺中花費了太多的時間,去實現自以為重要、卻對客戶無關緊要的特殊功能,進而忽略了代碼整體的健壯性和可維護性。

那么,我們怎么才能夠盡早地發現該問題呢?請保持與客戶經常聯系,以盡早地獲取他們的反饋。

使用指定類、方法的final修飾符

具有final修飾符的類不可派生。在Java核心API中,有許多最終應用程序的例子,例如java.lang.String,整個類都是final。為類指定final修飾符允許繼承類,并且為方法指定final修飾符允許覆蓋該方法。

如果將類指定為final,該類的所有方法都是final。Java編譯器將尋找內聯所有最終方法的機會。內聯對于提高Java操作的效率非常重要。這可以將性能平均提高50%。

話說回來,知易行難,即使是富有經驗的產品經理也不一定能在較短的時間內領悟需求的真諦,何況是那些滿腦子只注重功能實現的“碼農”們呢?

因此,一個實用的建議是:如果您不能直接聯絡到最終用戶的話,請盡量與該系統的產品經理、或運維人員進行禮貌、且頻繁的溝通。磨刀不誤砍柴工,這些時間的投入對于后期時間的節省是絕對值得的。

好啦,今天的Java代碼優化問題就為大家介紹到這里。同學們如果有疑問的話,可以來咨詢哦。達內蘭州java培訓機構為大家準備了豐富的Java課程資料,等你來拿!

上一篇:一篇文章帶你了解達內蘭州IT培訓機構的免費訓練營
下一篇:他們起薪9000元被企業爭搶,到底憑什么?

馬上預約七天免費體驗課

姓名:

電話:

5線小城寶媽學UI月入10000+、視頻剪輯5000一單!

蘭州IT培訓:想參加IT培訓拿高薪,你應該做好哪些準備?

快2個月沒收入了,金三銀四如何爭取更好的求職機會?

小白學UI成專家,畢業四年成立設計公司,年薪百萬!

選擇城市和中心
江西省

貴州省

廣西省

海南省

美国肥胖老人做受视频