什麼樣的程式碼稱得上是好程式碼?
朋友指著自己寫的程式碼問:你看我的程式碼寫的怎麼樣,有沒有問題,哪裡需要修改?
以最寬鬆的標準講,只要程式碼沒有邏輯錯誤,沒有嚴重效能問題,就沒有問題,但我知道,他問得不是這些,而是問程式碼有沒有可以更進一步最佳化的可能,我看他的程式碼做了清晰的分層,提取了基類,使用了模板模式,總體上算是不錯了。
問題來了, 究竟什麼樣的程式碼算得上是好程式碼呢?
面對這個問題,可能大多數程式設計師首先想到的是:高內聚,低耦合,高效率,已維護,易擴充套件。這些是對的,但這隻能算是正確的廢話,因為對大部分IT從業者(尤其是剛入行,缺乏足夠知識和經驗的新人)來說,並不能透過一個具體的標準去衡量。
拋開框架和具體技術細節,單純從編碼的角度講,依我的觀點:
物件導向程式設計,考察的是抽象化的能力。
第一層級的抽象是類。
從實際業務需求入手,將現實世界中的事物,抽象成類,透過類,物件之間的相互呼叫,完成業務需求,這是物件導向程式設計最基礎的抽象的能力。
第二層級的抽象是基類。
發現類之間的共性,提取基類,抽象類,基類負責處理共性的邏輯,子類負責處理個性的邏輯,從而實現程式碼的複用,邏輯更清晰,程式碼更易於維護。
再高一層級的抽象是介面。
介面僅僅定義了一組規範標準,而不包含任何實現邏輯,因此,介面比抽象類的適用範圍更廣。物件導向開發原則中的“依賴倒置原則”,簡單來說,就是要面向介面程式設計。
更高一層級的抽象是泛型。
為什麼將泛型放到比基類和介面更高一層級,因為基類和介面,都只是對其繼承者的單一型別的抽象,而泛型,是對多個相互協作型別的抽象,泛型不僅僅是對型別的抽象,還抽象出了多個型別間相互協作行為,正確的使用泛型,能夠讓程式碼變得更精煉,邏輯更嚴謹規範。
好了,以上四個層級,也是簡單的給程式碼劃分等級,看看自己寫的程式碼,現在處於哪一個層級呢。
後記
當然,並非所有的程式碼都需要提取基類,定義介面,凡事都有一個適用範圍。
以上關於 抽象化 的觀點,算是自己多年從事軟體開發的一點小小的感悟,希望對你有一定幫助。
更為大家廣泛接受的,區分好程式碼的標準,可以參考“ 物件導向開發原則 ”,因為有太多文章寫這方面的內容,這裡不做展開,有興趣的朋友可以自行搜尋。
覺得有收穫的話大家也可以加 Java高階交流 群: 725633148 裡面會分享一些資深架構師錄製的影片錄影:有 Spring,MyBatis,Netty原始碼分析,高併發、高效能、分散式、微服務架構的原理,JVM效能最佳化、分散式架構等這些成為架構師必備的知識體系。還能領取免費的學習資源,目前受益良多!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545684/viewspace-2157981/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 碼農深耕 - 什麼樣的程式碼才是好程式碼?
- 什麼是程式碼審計?程式碼審計有什麼好處?
- 什麼是低程式碼?低程式碼平臺能解決什麼樣的問題?
- 什麼是無程式碼?無程式碼應用開發的12大好處!
- 究竟什麼樣的遊戲體驗才能稱得上“好玩”遊戲
- 什麼是程式碼整理?
- 低程式碼是什麼?
- 什麼是低程式碼的窘境?
- html的空格程式碼是什麼HTML
- 低程式碼是什麼意思?低程式碼平臺的技術特點是什麼?
- 低程式碼與無程式碼真正的區別是什麼
- 無程式碼和低程式碼最大的區別是什麼?
- 什麼樣的社群是好的程式設計師社群?程式設計師
- 什麼是 unicode 程式碼點Unicode
- 低程式碼是什麼意思?
- 低程式碼是什麼意思
- 為什麼說一個好的Java程式設計師,是無碼勝有碼?Java程式設計師
- 什麼是程式碼覆蓋率
- HTTP狀態程式碼是什麼?HTTP
- 這是什麼騷批程式碼!
- PS指令碼篇--1.程式碼是什麼,寫程式碼幹嘛?指令碼
- 113 出錯程式碼502,是指什麼,怎樣解決
- 低程式碼的概念和目的是什麼?
- 低程式碼的技術原理是什麼?
- 在大公司寫程式碼是一種什麼樣的體驗?
- 一文看懂“低程式碼,零程式碼,APAAS”是什麼?怎麼選?
- Android之什麼是樁程式碼(Stub)?Android
- 什麼是低程式碼(Low-Code)?
- 什麼是HTTP 304狀態程式碼?HTTP
- 大牛的程式碼是這樣寫的
- 通過程式碼解釋什麼是API,什麼是SDK?API
- Python 程式碼中的 yield 到底是什麼?Python
- 火熱的低程式碼到底是什麼?
- 什麼是低程式碼?低程式碼開發平臺的三大優勢
- 什麼是python的多程式?好學嗎?Python
- 什麼是規則即程式碼 (RaC) - brcommunityUnity
- 幽默:什麼是業務邏輯程式碼?
- 什麼是遠端程式碼執行漏洞?