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