助您寫出優雅的Java程式碼七點建議

安全劍客發表於2019-01-15

有的Java程式程式碼一眼看上去就讓人覺得混亂且費解,而有的程式碼卻能給人如沐春風之感。本文將通過七點建議,幫助您寫出更好、更優雅的程式程式碼。

在每一位剛入行的程式設計師的心中,編寫程式都是一門神聖的藝術創作。他們無不希望自己的程式碼作品既簡潔清晰,又可讀性強,而且還具有一定的容錯能力。本文將為您帶來七點建議和技巧,以幫助您編寫出簡潔、幹練的Java程式碼。其中的有些可能會讓你覺得有些不可思議,但是請相信我,如下的每一條我都親身實踐過的。

助您寫出優雅的Java程式碼七點建議助您寫出優雅的Java程式碼七點建議

1.使用IntelliJ IDEA作為您的整合開發環境(IDE)

雖然我已經使用了六年的Eclipse和三年的NetBeans,而且我仍然偶爾會使用到它們,但是如今的大部分時間,我只使用IntelliJ IDEA( 請詳見 )。我並不是想在這裡展開有關IDE的大討論,而只是想告訴您,IDEA能夠根據其自有的最佳整合實踐標準,持續提示您寫出更短、更好、更簡潔的程式碼。

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

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

2.使用JDK 8或更高版本

JDK 8及其更高版本引入了諸如:lambda表示式(lambda expression,一種匿名函式)、功能介面、流式介面(stream APIs,提供更為可讀的原始碼實現方法)等許多新的功能,這些都有助於您寫出更簡短、更高效能的Java程式碼。

當然,您並不需要去逐一地記住這些功能,因為前面提到的IDEA會幫助您在實際程式設計的過程中,實現這些功能與服務。這也就是為什麼我首先向您建議使用IDEA的原因。如果您感興趣,也可以參考《Java8實戰,Java8 in Action》一書,其連結為: https://amzn.to/2rkOoM0

3.使用Maven/Gradle

請使用Maven(一個採用純Java編寫的開源專案管理工具, 請參見 )或Gradle(一個基於Apache Ant和Maven的專案自動化構建工具, 請參見 )來管理程式碼中的依賴關係,以及構建和部署自己的專案。

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

4.使用Lombok

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

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

5.編寫單元測試

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

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

如果您沒有時間去編寫單元測試,那您是否有更多的時間,去修復程式碼中那些可見、或不可見的bug呢?如果跳過了單元測試,那些倉促完成的程式碼將無法保證穩定性。特別對於一些新的程式碼變更而言,您完全無法通過及時的反饋途徑,知曉那些新產生的程式碼是否存在著錯誤隱患,是否會在將來執行的某個特定場景中產生不可預知的異常問題。

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

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

簡潔幹練的Java程式程式碼從來不是一蹴而就的,它往往需要您進行反覆地琢磨與改進。通過逐行進行程式碼重構、和執行各種測試用例,您可以確保自己的更改不會破壞既有程式碼的正確功能。同樣,IDEA極大地提供了對於程式碼重構的支援,其中包括提取方法(extract method,將某個大的函式拆分為多個小函式)、重新命名、內聯(inline)等功能。

當然,如果您對程式碼重構是什麼,以及它的作用不太瞭解的話,Martin Fowler的經典著作《重構:改善既有程式碼的設計(第2版),Refactoring: Improving the Design of Existing Code (2nd Edition)》 (請詳見 )絕對是一本您必備的參考書。

7.定期聯絡客戶,以獲取他們的反饋

最後一點,可能也是最重要的:客戶花錢讓您通過編寫程式碼,來解決他們的問題、滿足他們的需求、並解決他們的痛點。然而,您可能在不知不覺中花費了太多的時間,去實現自以為重要、卻對客戶無關緊要的特殊功能,進而忽略了程式碼整體的健壯性和可維護性。那麼,我們怎麼才能夠儘早地發現該問題呢?請保持與客戶經常聯絡,以儘早地獲取他們的反饋。

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

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

總結

在過去的多年程式設計實踐和專案應用中,我一直受益於上述七點心得。在此,我希望它們也同樣能給您的程式碼工作帶來幫助。祝您程式設計愉快!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2558317/,如需轉載,請註明出處,否則將追究法律責任。

相關文章