http://www.shnenglu.com/darkdestiny/archive/2006/12/02/15908.aspx一個大項目的源代碼,不要過份詳細的閱讀。大項目,其代碼量基本上是可以嚇死人的。過份的關注細節,常常會拘泥于細節,而忽略了整體框架。當你能夠看清框架的時候,亦花費了太多的時間。
因此,閱讀一個大項目的源代碼,其目的不在于欣賞代碼細節,而在于迅速看清項目整體框架的大概面貌:都有那些模塊,這些模塊是干嘛的(不關心具體怎么干),模塊之間的通訊機制大概是怎樣的,然后在考慮子模塊,通常只要掌握兩級子模塊就夠了。花上1,2天的時間掌握這一切,就達到了閱讀大項目源碼的目的。因為一旦你掌握了框架,你就可以按照這個框架實現這個項目,雖然和原項目全然不同,但是完成的需求卻是一樣的。
在軟件中,架構才是本質。
也許你指望詳細閱讀大項目源代碼能看到高質量的代碼,但是,大項目通常都是團隊的勞動成果,每個人的不同水平造就了代碼質量的高高低低,一個人在不同時間不同環境的代碼質量也是不同的。要指望在大片源碼面前找到高質量,簡直是天方夜譚。
也許你要從閱讀源碼中掌握某項技術細節,比如bsp,又或者換裝,那么,最好的建議是查找相關的技術文檔以及文檔上所附帶的sample code,這種sample code一般不會附帶任何干擾,簡潔得只是為了證明該技術而存在的。如果沒有這些東西,而只能從大項目源碼中找的話,你提前先了解了框架,能更快的查找和定位到表達該技術的文件。但是通常都會比較不幸,因為你為了明白這一技術,通常要先理解混入其中的另一技術。
最后談談怎樣才能閱讀到高質量的源代碼。何謂高質量?是指算法出人一表(比如某種o(1)的排序法)?還是采用了極端深奧的語言特性將某實現完美表達(比如模板的靈活運用)?無論是哪種,最好的來源是書,如《STL詳解》,或者《inside XX》這樣的東西。書的作者通常就是這些高質量代碼的作者,他會帶領你探索這些源碼背后的真相。