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