本文我們來聊一聊苦丁,如何將設(shè)計思想、原則物臂、模式等理論知識應(yīng)用到實際的項目開發(fā)中旺拉。讓大家能對學(xué)到的知識更好的應(yīng)用到項目中。
吃透理論鹦聪、先把書讀厚再把書讀薄
- 把理論知識靈活地應(yīng)用到實踐的前提是账阻,對理論有透徹、無盲點的理解泽本。如果我們對理論知識掌握得似懂非懂淘太,在實際軟件開發(fā)中,遇到跟講過的問題類似规丽,我們可以照葫蘆畫瓢去解決蒲牧,但是,如果問題背景稍有改變赌莺,我們就會比較難聯(lián)想到對應(yīng)的理論知識冰抢,更難靈活地應(yīng)用理論去解決。
- 要想透徹理解專欄中的每個知識點艘狭,一個是要多看幾遍挎扰,二是要有死磕精神翠订。雖然這兩個方法可能已經(jīng)是老生常談了,聽起來也沒有什么高大上的遵倦,但從我自身的學(xué)習(xí)經(jīng)驗來講尽超,它們確實很有用。
- 書讀百遍其義自見梧躺。有的時候似谁,對某個知識點,如果看一遍看不懂掠哥,你就硬著頭皮多看幾遍巩踏,或者隔幾天再回過頭來看一遍,你會發(fā)現(xiàn)原來很多看不懂的地方续搀,自然而然就懂了塞琼。
- 慢就是快,快就是慢目代。我們花一點時間把所有的知識點學(xué)透徹屈梁,實際上是件一勞永逸的事情。這個過程雖然看似漫長榛了,但收益卻很多。對比而言煞抬,如果你只是為了追求結(jié)課速度霜大,花一兩個月、甚至一兩個禮拜革答,把知識點學(xué)完战坤。這看似很快,但實際上收獲會很少残拐。
- 先把書讀厚途茫,再把書讀薄。反復(fù)地學(xué)溪食、持續(xù)地看囊卜。先把書讀厚,等到你把所有的知識點都理解透徹错沃,并且在腦子里建立起清晰的知識體系之后栅组,你會發(fā)現(xiàn),實際上很多知識的內(nèi)容也就那么點東西枢析,并不難記憶玉掸。前提是你先要花時間把書讀厚,然后才能做到把書讀薄醒叁。
- 雖然這里我們講到書讀百遍其義自見司浪,也講到死磕精神泊业,但是,必須強調(diào)一下啊易,有的時候脱吱,對于某個知識點,我們看了很多遍认罩、死磕了很長時間箱蝠,如果還是沒法透徹理解,我們也不要過于鉆牛角尖垦垂,非得“現(xiàn)在立刻馬上就要”把它拿下宦搬。我們可以先把這個知識點放一放,先看看后面的內(nèi)容劫拗,隔一段時間间校,讓知識沉淀、消化一下页慷,再回過頭來看也是可以的憔足。
在實戰(zhàn)中反復(fù)學(xué)習(xí)、模仿和借鑒
- 很多人說酒繁,理論的知識學(xué)了就忘滓彰,忘了是不是就等于白學(xué)了呢?實際上不是的州袒。結(jié)合具體的案例和代碼來學(xué)習(xí)揭绑,目的就是為了讓大家在實戰(zhàn)中學(xué)習(xí)。所以郎哭,學(xué)習(xí)的重點不是理論知識他匪,而是跟隨思維邏輯,學(xué)習(xí)如何分析代碼問題夸研,解決代碼問題邦蜜。經(jīng)過上百個代碼案例的剖析學(xué)習(xí),即便理論知識你有可能會忘記亥至,但這種潛移默化的能力鍛煉悼沈,是不會丟掉的。
- 對于新手來說抬闯,最好的學(xué)習(xí)方法之一就是“模仿”井辆。如果你是一名算法或者編程初學(xué)者,自己編寫代碼實現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)和算法溶握,可能會比較困難杯缺。在這種情況下,你就可以先從“照抄”開始睡榆,把所有的代碼都抄一遍或者抄幾遍萍肆,然后再慢慢地過渡到自己去默寫袍榆。
- 有人為了刷 LeetCode、刷算法題塘揣,會積累一些算法模板包雀,對于相似的問題,套用算法模板來快速解決亲铡。同樣的才写,我們也可以積累設(shè)計模板、代碼模板奖蔓,對于相似的功能需求赞草,我們可以套路設(shè)計模板、代碼模板來解決吆鹤。比如厨疙,在前面講到的限流框架、灰度組件中疑务,加載配置文件這樣一個常用功能的設(shè)計和實現(xiàn)沾凄,我們就可以抽象成模板。對于其他項目中類似的功能需求知允,直接套用就可以撒蟀,不用從零開始設(shè)計和實現(xiàn)了。
刻意思考廊镜、刻意訓(xùn)練牙肝、追求極致
- 要想把理論知識應(yīng)用到項目中,并且做到潤物細無聲嗤朴、融會貫通、無招勝有招虫溜,我們需要經(jīng)過漫長的刻意思考和刻意訓(xùn)練雹姊。
- 拿到一個功能需求的時候,我們先去思考一下如何設(shè)計衡楞,而不是上來就寫代碼吱雏。寫代碼時,我們也要時刻思考代碼是否遵循了經(jīng)典的設(shè)計思想瘾境、設(shè)計原則歧杏,比如是否足夠可擴展、是否滿足 SOLID 原則迷守、可讀性如何等等犬绒。
- 寫完代碼之后,我們再思考一下兑凿,代碼是否有進一步優(yōu)化的空間凯力。做 Code Review 的時候茵瘾,看到別人的優(yōu)秀的代碼,我們就去思考一下咐鹤,有哪些值得借鑒的地方拗秘。
- 總之,在平時的開發(fā)中祈惶,我們要刻意的去做這種跟代碼質(zhì)量雕旨、代碼設(shè)計相關(guān)的思考訓(xùn)練。時間長了捧请,這種思考就能成為習(xí)慣和本能反應(yīng)凡涩,慢慢地,你的代碼能力也就不自覺地提高了血久。
- 刻意訓(xùn)練的過程在前期會比較痛苦突照。為了盡可能寫出高質(zhì)量的代碼,為了刻意訓(xùn)練在代碼中應(yīng)用理論知識氧吐,原本半天就能寫好的代碼讹蘑,可能需要好幾天才能完成。
- 跟前面講到的花很多時間把理論知識搞透徹的道理一樣筑舅,刻意訓(xùn)練雖然在前期需要投入更多的時間和精力座慰,但也是一件一勞永逸的事情。等到訓(xùn)練到一定程度之后翠拣,你就會發(fā)現(xiàn)版仔,在不依賴這個知識點列表的情況下,你開始不自主地考慮代碼質(zhì)量問題误墓、設(shè)計問題蛮粮,不經(jīng)意寫出的代碼,就完全符合高質(zhì)量代碼的要求了谜慌,而且然想,寫出好的代碼并不會花費更多的時間了。相反欣范,如果不愿意為刻意訓(xùn)練付出時間和精力变泄,每次寫代碼都馬馬虎虎,代碼質(zhì)量永遠都提高不了恼琼,也永遠都達不到靈活應(yīng)用理論知識到項目中妨蛹。
- 多花點心思和時間把一段代碼寫好、優(yōu)化到極致晴竞,比寫十段湊活能用的代碼蛙卤,對提高代碼能力更有效。實際上颓鲜,這就好比刷 LeetCode 算法題表窘,對于一些經(jīng)典算法的經(jīng)典題目典予,我們一定要刻意地多花點時間搞清楚,死磕一下乐严。雖然死磕的過程很痛苦瘤袖,可能會花掉你很多時間,但一旦搞明白之后昂验,其他類似的題目都可以很快解決捂敌。相反,如果看到不會的問題既琴,連思考都不思考占婉,就去看答案,那做十道題甫恩,也還是沒有太多長進逆济,看到題目不看答案還是寫不出來。