84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
最近在阅读一些优秀的开源项目源码的时候,遇到了一个问题。
对于某一行代码,我知道它是用来做什么的,但是就是不明白作者为什么要这么写。
我想了一下,觉得可能是自己对于程序设计这一块不熟悉。所以打算从设计模式入手。我的问题是,设计模式能否满足我的需要?还是说我现在这种水平注定是读不懂的,等基础知识足够扎实以后会无师自通?
注: 读的是Android开源项目
小伙看你根骨奇佳,潜力无限,来学PHP伐。
我想了一下,覺得可能是自己對於程式設計這一塊不熟悉。
是的,你覺得沒錯。
所以打算從設計模式著手。
這是個好主意。不過你不要期望能夠“畢其功於一役”,這很難。要真正學懂設計模式並能靈活的運用/套用在現實中,需要很多次/長期的反覆學習與練習。你的基礎和天賦會有助於減少這些消耗,但有的東西只是靠看書真的無法變成知識。
對於你的問題,答案是肯定的。雖然你現在的「不明白」不一定全是因為你不懂程式設計,但軟體設計的知識總是能夠幫助到你,多多少少。
注意一點,設計模式並非軟體設計的全部,只是其中的很重要的一部分。在我們程式設計生涯的很長一段時間裡,我們都會經歷想你說的那種「這種程度注定是讀不懂的」的階段,但是這不該成為阻擋你繼續閱讀原始碼的理由。
所謂「無師自通」是不太現實的,學習程式設計這件事情本身就沒有定規,它是一種綜合素質的體現。你不能指望自己一頭栽進「設計模式」的大坑,等爬出來之後「閱讀開源專案」就水到渠成了;反過來也是一樣。它們應該是相互促進的關係,有點類似於「理論與實踐相結合」。
閱讀原始碼的時候,重點不在於“我是否完全懂了”,而在於“我都讀懂了哪些?還有哪些不懂?”懂了的,實際動手的時候嘗試用進去,不懂的,學習軟體設計的相關知識去搞懂它。而且有鑑於此,閱讀源碼也不一定非要選擇大型項目,有的時候哪怕十幾行的片段都能讓人受益匪淺——不過當然,談及到“設計”的層面,當然要上到一定的規模才能有所體現。
設計模式不是銀彈,不是九陰真經,最好不要抱著「學好了設計模式自己的程式等級就能夠提高一大截」這個想法。 個人感覺設計模式這個東西在你沒有寫過大量程式碼(不是堆砌程式碼、是別寫邊想)的情況下,是很難讀到心裡去的,如果你有一些程式碼經驗,這時你去看設計模式,會有一種「我擦!就是這樣!」的感覺。 設計模式本質上就是在大量的軟體實踐中總結出的解決某些問題的某些解決模式,它不是入門法訣,而是當你陷入代碼泥潭時的一根稻草(救命稻草中的一根) 。 以上僅為個人見解~
至於學習開源項目,樓上大哥已經講得比較清楚了,就不多說了,一句話:從結構入手,選模組閱讀。
好的開源專案可以讓你從中看到程式設計的藝術(略裝逼,但真的是這種感覺)
有幫助滴,讀Spring就可以了
OOP最重要的就是抽象。 而設計模式就是抽象的結果。 (個人對設計模式的理解)
是的,你覺得沒錯。
這是個好主意。不過你不要期望能夠“畢其功於一役”,這很難。要真正學懂設計模式並能靈活的運用/套用在現實中,需要很多次/長期的反覆學習與練習。你的基礎和天賦會有助於減少這些消耗,但有的東西只是靠看書真的無法變成知識。
對於你的問題,答案是肯定的。雖然你現在的「不明白」不一定全是因為你不懂程式設計,但軟體設計的知識總是能夠幫助到你,多多少少。
注意一點,設計模式並非軟體設計的全部,只是其中的很重要的一部分。在我們程式設計生涯的很長一段時間裡,我們都會經歷想你說的那種「這種程度注定是讀不懂的」的階段,但是這不該成為阻擋你繼續閱讀原始碼的理由。
所謂「無師自通」是不太現實的,學習程式設計這件事情本身就沒有定規,它是一種綜合素質的體現。你不能指望自己一頭栽進「設計模式」的大坑,等爬出來之後「閱讀開源專案」就水到渠成了;反過來也是一樣。它們應該是相互促進的關係,有點類似於「理論與實踐相結合」。
閱讀原始碼的時候,重點不在於“我是否完全懂了”,而在於“我都讀懂了哪些?還有哪些不懂?”懂了的,實際動手的時候嘗試用進去,不懂的,學習軟體設計的相關知識去搞懂它。而且有鑑於此,閱讀源碼也不一定非要選擇大型項目,有的時候哪怕十幾行的片段都能讓人受益匪淺——不過當然,談及到“設計”的層面,當然要上到一定的規模才能有所體現。
設計模式不是銀彈,不是九陰真經,最好不要抱著「學好了設計模式自己的程式等級就能夠提高一大截」這個想法。
個人感覺設計模式這個東西在你沒有寫過大量程式碼(不是堆砌程式碼、是別寫邊想)的情況下,是很難讀到心裡去的,如果你有一些程式碼經驗,這時你去看設計模式,會有一種「我擦!就是這樣!」的感覺。
設計模式本質上就是在大量的軟體實踐中總結出的解決某些問題的某些解決模式,它不是入門法訣,而是當你陷入代碼泥潭時的一根稻草(救命稻草中的一根) 。
以上僅為個人見解~
至於學習開源項目,樓上大哥已經講得比較清楚了,就不多說了,一句話:從結構入手,選模組閱讀。
好的開源專案可以讓你從中看到程式設計的藝術(略裝逼,但真的是這種感覺)
有幫助滴,讀Spring就可以了
OOP最重要的就是抽象。
而設計模式就是抽象的結果。 (個人對設計模式的理解)