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