歡迎光臨
每天分享高質量文章

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

來自:JavaGuide(微訊號:JavaGuide)

原文地址:https://dzone.com/articles/7-tips-to-write-better-java-code-you-should-know-1[1] 

(本文對原文做了部分修改和一點補充)

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

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

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

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

另外,推薦使用 IDEA 的快捷鍵來加快編碼速度, IDEA 有很多非常方便的快捷鍵和功能,用的多了自然就熟悉了!

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

2.使用 JDK 8 或更高版本

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

當然,您並不需要去逐一地記住這些功能,因為前面提到的 IDEA 會幫助您在實際程式設計的過程中,實現這些功能與服務。這也就是為什麼我首先向您建議使用 IDEA 的原因。

如果你對 Java8 新特性還不瞭解的話,可以檢視 Java 入門教程:https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/What’s%20New%20in%20JDK8/Java8Tutorial.md[2] ;

如果你想深入 Java8 新特性,我可以推薦你一些不錯的學習資源:

https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/What’s%20New%20in%20JDK8/Java8%E6%95%99%E7%A8%8B%E6%8E%A8%E8%8D%90.md[3]

3.使用 Maven/Gradle

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

大部分 Java 後端開發人員都用的是 Maven,或許是因為幾乎所有 Java 開發者都熟悉 XML。下麵我們來看看 Maven 能為我們做什麼。

Maven 能為我們做什麼?

我們可以使用 maven 輕鬆構建專案。我們可以使用 maven 的幫助輕鬆新增專案的 jar 和其他依賴項。Maven 提供專案資訊(日誌檔案,依賴串列,單元測試報告等)在更新 JAR 和其他依賴項的中央儲存庫時,Maven 對專案非常有幫助。在 Maven 的幫助下,我們可以將任意數量的專案構建為輸出型別,如 JAR,WAR 等,而無需執行任何指令碼編寫。使用 Maven,我們可以輕鬆地將我們的專案與原始碼控制系統(例如 Subversion 或 Git)整合。

4.使用 Lombok

是時候向setter/getterashcode/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.註意程式碼規範

從學習程式設計的第一天起就要養成不錯的編碼習慣,包、類、方法的命名這些是最基本的。

推薦閱讀:

阿裡巴巴 Java 開發手冊(詳盡版)https://github.com/alibaba/p3c/blob/master/阿裡巴巴 Java 開發手冊(詳盡版).pdf[4]Google Java 程式設計風格指南:http://www.hawstein.com/posts/google-java-style.html[5]Effective Java 第三版中文版: https://legacy.gitbook.com/book/jiapengcai/effective-java[6]

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

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

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

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

總結

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

已同步到看一看
贊(0)

分享創造快樂