0.當(dāng)我們學(xué)習(xí)Spring的時候,我們在談?wù)撌裁?/h2>

前后將近一個月的時間,我終于將《Spring源碼深度解析》這本書看完了,連帶著查閱了許多資料和別人的blog。核心知識點整理成了自己的blog,更多的代碼只是瀏覽,大致理清邏輯。只能堪堪說理解Spring的原理,對一些開發(fā)過程中的個性化需求有了更好的解決方案。這個時候回頭看一下第一節(jié)寫下的前言,為什么要學(xué)習(xí)Spring?

如果追求理解每一行代碼,真的是一件非常耗時的事情,Spring作為一個全球都在用的框架,其中有著非常多需要考慮的問題和細節(jié)實現(xiàn),我們需要的是關(guān)注核心流程的實現(xiàn),了解它的工作原理,學(xué)習(xí)它的代碼風(fēng)格,關(guān)心它的設(shè)計理念。畢竟我們的目的是個人成長而不是維護Spring。

其實很多大牛并不主張花費過多的時間研究框架源碼,這些大牛多半是名校科班出身,在計科領(lǐng)域有著非常高的建樹,甚至本人就是框架作者。他們可能更多的時間和經(jīng)歷花在算法實現(xiàn)、效率優(yōu)化等方面。

但我站在一個普通的Java開發(fā)工程師的角度,我認為研讀一個框架源碼是非常有必要的。

首先,作為一名工程師,我們的工作是利用既有的定理、法則或工具,解決一些技術(shù)問題,實現(xiàn)工程上的應(yīng)用。Spring作為一個最流行的Javaweb解決方案之一(甚至沒有之一),就像圖紙之于船舶建造一樣(原諒我這個比喻,轉(zhuǎn)行前我就是船舶工程師),沒有理由不去熟悉并做到按需使用和優(yōu)化。誠然,算法、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)甚至數(shù)字電路才是更底層的原理,然而你每天打交道的并不是這些的底層的東西,就像船舶工程師不是每天分析流體力學(xué)一樣。有些東西需要了解,有些需要理解,而有些是吃飯的家伙,需要拿來就用。
其次,作為一個全球流行的開源框架,其代碼質(zhì)量已經(jīng)經(jīng)過了無數(shù)生產(chǎn)環(huán)境的考驗。這些代碼不管代碼風(fēng)格如何,其可用性和穩(wěn)定性是毋庸置疑的。而實際上,Spring的代碼風(fēng)格和優(yōu)雅程度遠超我們工作中看到的代碼,畢竟代碼的可讀性和優(yōu)雅性也是高生產(chǎn)力的保證,顏值即正義對coding也是一樣的。其中包含了大量設(shè)計模式的最佳實踐,大量原生Api的工程應(yīng)用和許多精妙的邏輯實現(xiàn)。這些應(yīng)用到你自己的代碼中能夠讓你的代碼質(zhì)量迅速提升。開玩笑的說,開發(fā)的工作大部分是Ctrl+c,Ctrl+v。而Spring提供了這么好的Ctrl+c的素材,我們有什么理由不去學(xué)習(xí)使用呢。
最后,框架說到底也是基于語言本身開發(fā)出來的。不管是應(yīng)用,還是出現(xiàn)bug后的調(diào)試,都要基于源碼。與其出現(xiàn)問題的時候陷于邏輯細節(jié),迷失在復(fù)雜的函數(shù)棧中,為什么不提前去了解代碼結(jié)構(gòu)。這樣出現(xiàn)問題后至少能夠通過調(diào)用棧迅速的定位問題。而且,不同框架很多思想是相通的。不敢說一通百通,至少當(dāng)你能對一個框架大體掌握之后,當(dāng)一個框架對你來說不再是一個黑盒子之后,你就會更有信心去面對其它的框架、系統(tǒng)。

本篇是一節(jié)技術(shù)無關(guān)的文章,寫了點我對于技術(shù)本身的一點思考和觀點,也希望能給讀者帶來一點啟示。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容