什麼樣的程式碼稱得上是好程式碼?

Java大蝸牛發表於2018-07-17

朋友指著自己寫的程式碼問:你看我的程式碼寫的怎麼樣,有沒有問題,哪裡需要修改?

以最寬鬆的標準講,只要程式碼沒有邏輯錯誤,沒有嚴重效能問題,就沒有問題,但我知道,他問得不是這些,而是問程式碼有沒有可以更進一步最佳化的可能,我看他的程式碼做了清晰的分層,提取了基類,使用了模板模式,總體上算是不錯了。


問題來了, 究竟什麼樣的程式碼算得上是好程式碼呢?


面對這個問題,可能大多數程式設計師首先想到的是:高內聚,低耦合,高效率,已維護,易擴充套件。這些是對的,但這隻能算是正確的廢話,因為對大部分IT從業者(尤其是剛入行,缺乏足夠知識和經驗的新人)來說,並不能透過一個具體的標準去衡量。


拋開框架和具體技術細節,單純從編碼的角度講,依我的觀點:

物件導向程式設計,考察的是抽象化的能力。


第一層級的抽象是類。

從實際業務需求入手,將現實世界中的事物,抽象成類,透過類,物件之間的相互呼叫,完成業務需求,這是物件導向程式設計最基礎的抽象的能力。


第二層級的抽象是基類。

發現類之間的共性,提取基類,抽象類,基類負責處理共性的邏輯,子類負責處理個性的邏輯,從而實現程式碼的複用,邏輯更清晰,程式碼更易於維護。


再高一層級的抽象是介面。

介面僅僅定義了一組規範標準,而不包含任何實現邏輯,因此,介面比抽象類的適用範圍更廣。物件導向開發原則中的“依賴倒置原則”,簡單來說,就是要面向介面程式設計。


更高一層級的抽象是泛型。

為什麼將泛型放到比基類和介面更高一層級,因為基類和介面,都只是對其繼承者的單一型別的抽象,而泛型,是對多個相互協作型別的抽象,泛型不僅僅是對型別的抽象,還抽象出了多個型別間相互協作行為,正確的使用泛型,能夠讓程式碼變得更精煉,邏輯更嚴謹規範。


好了,以上四個層級,也是簡單的給程式碼劃分等級,看看自己寫的程式碼,現在處於哪一個層級呢。


後記

當然,並非所有的程式碼都需要提取基類,定義介面,凡事都有一個適用範圍。

以上關於 抽象化 的觀點,算是自己多年從事軟體開發的一點小小的感悟,希望對你有一定幫助。

更為大家廣泛接受的,區分好程式碼的標準,可以參考“ 物件導向開發原則 ”,因為有太多文章寫這方面的內容,這裡不做展開,有興趣的朋友可以自行搜尋。

覺得有收穫的話大家也可以加 Java高階交流 群: 725633148  裡面會分享一些資深架構師錄製的影片錄影:有 Spring,MyBatis,Netty原始碼分析,高併發、高效能、分散式、微服務架構的原理,JVM效能最佳化、分散式架構等這些成為架構師必備的知識體系。還能領取免費的學習資源,目前受益良多!

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

相關文章