標籤:

抽象能力決定編程能力

程序員的抽象能力是在了解計算機工作原理的基礎上,藉助於一種或多種編程語言將問題的解決方案抽象為計算機程序的能力。在前文《關於編程能力的思考》中提到了編程能力包括理論基礎和系統設計能力,抽象思維能力恰恰就是決定編程能力的關鍵。

程序的本質是人的意志延伸到計算機的可識別的指令。計算機思維簡單僅能識別 0 1 代碼,本身不能解決任何問題,只能由人編寫程序控制計算機解決問題,因此編程的本質就是人「教會」計算機解決問題。

編寫程序總是離不開各種各樣的數據結構與演算法,其中又蘊含著深刻的數學思想。理解一種數據結構或演算法,就是在理解解決方案的一種抽象。

隨著業務越來越複雜、需求越來越多,程序總是在擴展和重構之間徘徊,在這個過程中,需要程序員深入理解業務並逐漸優化系統設計。正是在這樣逐漸抽象的過程中,誕生了開發框架、中間件和業務框架。有著良好抽象能力的程序員能夠根據業務的特點抽象出軟體最合理的設計,使得程序具有良好的可讀性、性能、擴展性、伸縮性、可用性和可靠性,而抽象能力差的程序員面對複雜的業務邏輯很可能束手無策導致代碼臃腫難以維護。

如何提高編程的抽象思維能力,或者抽象能力又具體體現在哪些方面呢?作者認為有三個方面可以參考:善用自頂向下逐層分解的程序設計思想、熟練使用設計模式和對代碼進行必要的重構。這三個方面能夠體現出優秀程序員的抽象思維能力。

1、善用自頂向下、逐層分解的程序設計思想:

無論閱讀或編寫什麼樣的程序,都要始終堅持自頂向下、逐層分解。無論配置多少個顯示器,打開多少個編輯器,都不可能一次展示出所有的代碼,在閱讀或編程時,始終把思維控制在一個屏幕範圍內,看不到的代碼都當做是黑盒,用抽象的思維去理解代碼。小系統總是容易理解,大系統則很難一次把解決方案裝入大腦,越大的系統越需要在設計和理解時進行抽象。

2、熟練使用設計模式:

設計模式是程序抽象到一定層次後自然而然產生的多種模式。基於這些模式,可以更好地理解和交流程序的架構和設計,是軟體開發的成熟套路。設計模式是面向對象軟體能夠復用的基礎,用好設計模式能培養程序員的抽象思維能力。

3、對代碼進行必要的重構:

重構可以改善既有代碼的設計,消除代碼中的壞味道。任何一段代碼都應該經歷三個階段,最初的設計階段追求多快好省地解決問題,後來的設計優化用於擴展程序的新需求和解決 bug,最後的重構則把重點放在系統設計的優化上。重構是培養抽象能力的好方法,如何用更好的抽象模型描述解決方案以實現更好的擴展性、伸縮性、可用性、可靠性值得每個人深思。

每周 3 篇學習筆記或技術總結,面向有一定基礎的 Java 程序員,內容涉及 Java 進階、虛擬機、MySQL、NoSQL、分散式計算、開源框架等多個領域。關注作者或微信公眾號 backend-develop 第一時間獲取最新內容。

抽象能力決定編程能力 | 後端開發那點事兒
推薦閱讀:

有什麼你覺的很好的 idea,卻一直沒時間來實現?
C語言基礎:不定參數
蕭井陌的直播筆記 - 打磚塊(1)
放學快走,你的電腦在實驗室自己喊啪嗒!
如何精通C語言

TAG:編程 |