在大學(xué)實習(xí)的時候,用到了 Python 里頭的一個小模塊 ulrilb2,是一個簡單的爬蟲,這個模塊出錯的時候,會拋出各種異常,突然想知道為什么會拋出這些異常,而且 Python 自帶的模塊都是開源的,能拿到一手的源碼,于是把它讀完了。這也是第一次知道最簡單的爬蟲是怎么樣的。
接著,實習(xí)項目中用到了 Python 的 Web 框架 Django,非常強大。Django book 看完后,就能寫出一個簡單的網(wǎng)頁。Django 是典型的 MVC 框架(?),那時對 Web 的知識很少,是知道有 HTTP 協(xié)議這些東西,但 Django 里每個模塊之間是如何協(xié)同工作的呢,MVC 又是怎么體現(xiàn)的?這些對當(dāng)時的我來說都非常的感興趣。當(dāng) Django 收到一個 HTTP 請求,到瀏覽器展示一個頁面,Django 里頭到底發(fā)生了什么。帶著這些簡單的問題,開始翻閱 Django 的源代碼。之后的 Libevent, Memcache 和 Redis 都一樣。
閱讀代碼是很好的鍛煉耐心和毅力的機會。看別人代碼的過程,即針對一個疑問,收集線索,有點連成線的過程,所以中間肯定有一段時間非常難熬與枯燥;而當(dāng)讀完所有的代碼,所有的線索都連成一條線,就能體會柳暗花明了。
一些優(yōu)秀的開源項目里有些很值得新手學(xué)習(xí)的地方,譬如框架,設(shè)計模式等。但并不是說閱讀了大量的代碼就能寫出很牛的代碼,寫代碼需要對當(dāng)前需求的把握和清晰的邏輯思維,這是我們在實踐中可以慢慢培養(yǎng)的。千萬不要讀得太多,而寫得太少。