設計模式是前人經驗的總結,教大家如何寫出可擴展、可讀、可維護的高質量代碼。設計模式與日常工作中的編碼有直接的關係,直接影響到開發人員的開發能力。 ...
目錄
1 什麼是設計模式?
設計模式是前人經驗的總結,教大家如何寫出可擴展、可讀、可維護的高質量代碼。設計模式與日常工作中的編碼有直接的關係,直接影響到開發人員的開發能力。
學習“數據結構與演算法”是為了寫出高效的代碼,而學習設計模式是為了寫出高質量的代碼。
也許有同學會問:只要代碼能用、能解決問題不就夠了嗎?
其實不然,寫出“能用”代碼的人比比皆是,但並不是每個人都能寫出“好用”的代碼。只會寫能用的代碼,永遠成不了大牛。
另一方面,寫爛代碼和好代碼花費的時間是差不多的。當你把編寫高質量代碼培養成習慣之後,在編寫代碼的時候,你自然就有代碼質量意識,也就能寫出不錯的代碼。
2 為什麼要學習設計模式?
2.1 完美回答面試中設計模式相關的問題
先上一道面試題:
“你瞭解設計模式嗎?在你過往的項目中,用到過哪些設計模式?是在什麼場景下用的?都解決了哪些問題?”
這一連串提問,很眼熟吧?學習設計模式能幫你在這道題目上吊打面試官。
2.2 不再編寫被其他同事吐槽的爛代碼
代碼寫得好,能讓你在團隊中脫穎而出。
代碼能力是一個程式員最基礎的能力,是展示一個程式員基礎素養直接的衡量標準。你寫的代碼,實際上就是你名片。
2.3 讓讀源碼、學框架事半功倍
提升程式開發軟實力,就要註重技術的積累,既要有廣度,也要有深度。這其中學框架、讀源碼是必經之路。
優秀的開源項目、框架、中間件,是集各大頂尖高手的豐厚經驗,經過大量迭代才成型的,我們如果沒有身後的基本功,在剖析原理、學習技術的時候,就不可能參透精髓,頂多只是瞭解個皮毛,似懂非懂。
2.4 提高複雜代碼的設計和開發能力
假設現在給你一個任務:開發一個跟業務無關的、通用的功能模塊,你會如何下手?
也許你需要思考這些問題(包括但不限於):
如何分層、分模塊?如何設計相關類?每個類應該有哪些屬性、方法?
怎麼設計類之間的交互?該用繼承還是組合?該使用介面還是抽象類?
如何解耦,保證高內聚低耦合?該用單例模式還是靜態方法?用工廠模式創建對象還是直接 new 出來?
2.5 為職場發展做好技術準備
瘦風說:不想當大牛的程式員不是好菜鳥。我們如果要在職場取得更長遠的發展,就要重視基本功的訓練和基礎知識的積累。
(1) 隨著技術的積累,我們可能需要承擔一些培養新人、指導初級員工、做 code review 等方面的工作。
可如果我們自己對 “什麼是好代碼?如何寫出好代碼?” 都不瞭解,那又要如何指導別人、讓別人信服呢?
(2) 如果你的級別比較高,可能還要為 開發進度、開發效率和項目質量 負責。如果項目中有很多垃圾代碼,會導致整個項目的維護成本高昂,添加、修改一個功能都會很費力,最終拉低整個團隊的開發效率。而代碼質量不夠高,還會導致線上 bug 頻發,也難以及時排查解決相關問題。
(3) 最後,當你成為團隊的 leader,或者資深工程師、技術專家之後,你肯定要負責一部分團隊的招聘工作。這時,如果要考察候選人的設計能力、代碼能力,那設計模式相關的問題會是一個很好的切入點。
3 本篇總結
設計模式與編碼、開發有著直接的關係,是你現在就要開始學習的。
早點學,以後的項目就都可以拿來鍛煉,每寫一行代碼都是對內功的使用和強化,是可以在整個職業生涯中受益的事。
參考資料:
極客時間專欄-王爭《設計模式之美》
版權聲明
作者: 瘦風(healchow.com)
出處: 瘦風的南牆(cnblogs.com/shoufeng)
感謝閱讀, 右側導航欄有「瘦風的南牆」公眾號二維碼,輸出更及時、更體系,歡迎掃碼關註