爲什麼你應該多讀讀別人的代碼

這篇文章,是寫給那些不經常閱讀他人代碼,甚至從不閱讀他人代碼的人看的。

很多人沒有閱讀他人代碼的習慣,自從他們開始學習編程開始可能就這樣。而且,就我所知,很少有人會跟編程新手強調閱讀他人代碼的重要性。

在我看來,閱讀代碼這件事,跟閱讀書籍十分類似。我們會通過閱讀他人寫的書,特別是好書,來汲取他人優秀的思想,增長自己的能力。同樣在編程方面,閱讀他人的代碼(最好是優秀的代碼),從中體會和學習代碼背後的思想,可以提高我們的編程能力。

很多新人在剛學完一門編程語言後,想要寫點有意思的東西,但在大多數情況下,無從下手。這其實跟寫作很類似。一個人,如果平時很少閱讀,沒有讀過優秀的書籍,沒有進行高質量的輸入的話,是很難寫出有價值的文章的,甚至不知道自己可以寫什麼內容。當然,不排除有些人沒有讀書的習慣,但是他們見過不少世面,去過不少地方,在我看來,這其實也算是一種高質量的輸入,只是這種輸入方式,不是通過閱讀,而是通過閱世。由此可見,閱讀他人源碼的重要性。

但是,很多人不願意閱讀他人的源碼,爲什麼會這樣?我想就這個問題,提出自己的幾點想法。

原因一,從沒有閱讀他人源碼的習慣。正是因爲沒有閱讀他人源碼的習慣,所以當碰到他人的源碼時,會傾向於不讀。這裏,我認爲可以用馬太效應來解釋這種現象。如果一個人不怎麼閱讀他人的源碼,那麼根據馬太效應,他會傾向於不讀。如果有閱讀他人的源碼的習慣,你就讀的更多。

原因二,覺得那是別人的代碼,不是我自己寫出來的東西,我不看,我要寫我自己的代碼。對於這個,同樣類比到閱讀書籍上,如果一篇文章是別人寫的,難道就不讀了嗎。況且,我們平時讀的文章,幾乎都是別人寫出來的。

原因三,認爲自己讀不懂。這裏我還是通過閱讀書籍來進行類比。有些書籍,特別是那些優秀的書籍,對於一個人來說,會是難以讀懂的,但是通過自己不斷地積累閱讀量,你總可以在以後讀懂的;有些書籍,則是可以稍微努力一下,就可以讀懂的;有些書籍,不花一點功夫就能讀懂。閱讀代碼也一樣,有些代碼確實難以讀懂,尤其是那些大師寫下來的代碼,但是,通過讀那些稍微超出自己理解範圍的代碼,一點點地積累,不斷地進步,遲早能讀懂那些當初讓自己讀懂當初讀不懂的代碼。

關於閱讀他人代碼的好處,我還想再討論一下。

首先,閱讀他人代碼的最顯而易見的好處,就是可以應用自己的所學到的編程知識。通過閱讀他人的源代碼,你會不斷地去理解他們的代碼,在這個過程中你會不斷地去調用自己所學的編程知識,自己對所學知識的理解會更加地深入,閱讀代碼的能力也會相應的提高。就像我們能夠通過閱讀文字來鍛鍊和提高自己的閱讀能力一樣。

其次,可以學習他人優秀的思路。他人代碼背後的思路是最有價值的東西。一個東西,那些高手是怎麼把這個東西實現的,你通過學習他們實現這個東西的思路,自己的編程能力也能得到很好的提高。

最後,對於踩在前人的肩膀上,我想進行一些討論。有很多人都知道,我們作爲後人,要想看得高,看得遠,就需要踩在前人的肩膀上。但是,在我看來,很多人在做的事情,卻與這個觀點背道而馳。就拿貪喫蛇這個程序作爲例子。很多人寫貪喫蛇這個程序的時候,會試圖憑藉自己的一己之力從頭開始寫,過程中不查別人實現這個程序後寫下來的實現文檔,最多查查編程語言的語法知識。這其實是一種重複造輪子的行爲。前人已經把輪子發明出來了,爲什麼還要想着去重新發明一遍呢?你可能會想到,我自己發明一遍,前人走過的路,我自己再走一遍,那麼印象會更加深刻,會明白更多的知識,就能徹底懂得這個東西了。這其實是沒有必要的。(那麼爲什麼沒有必要呢?)前人早就發明好的東西,我們直接去學習它的思路就好,比如貪喫蛇,直接學習貪喫蛇的實現思路即可。放眼其他領域,你不必重新發現一個已知的著名數學公式;不必重新發明一把錘子;不必重新發明一輛汽車。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章