最近有做源碼閱讀的事情,覺(jué)得有些費(fèi)盡,做了一些思考。
一個(gè)大項(xiàng)目的源代碼,不要過(guò)份詳細(xì)的閱讀。大項(xiàng)目,其代碼量基本上是可以嚇?biāo)廊说摹_^(guò)份的關(guān)注細(xì)節(jié),常常會(huì)拘泥于細(xì)節(jié),而忽略了整體框架。當(dāng)你能夠看清框架的時(shí)候,亦花費(fèi)了太多的時(shí)間。
因此,閱讀一個(gè)大項(xiàng)目的源代碼,其目的不在于欣賞代碼細(xì)節(jié),而在于迅速看清項(xiàng)目整體框架的大概面貌:都有那些模塊,這些模塊是干嘛的(不關(guān)心具體怎么干),模塊之間的通訊機(jī)制大概是怎樣的,然后在考慮子模塊,通常只要掌握兩級(jí)子模塊就夠了。花上1,2天的時(shí)間掌握這一切,就達(dá)到了閱讀大項(xiàng)目源碼的目的。因?yàn)橐坏┠阏莆樟丝蚣埽憔涂梢园凑者@個(gè)框架實(shí)現(xiàn)這個(gè)項(xiàng)目,雖然和原項(xiàng)目全然不同,但是完成的需求卻是一樣的。
在軟件中,架構(gòu)才是本質(zhì)。
也許你指望詳細(xì)閱讀大項(xiàng)目源代碼能看到高質(zhì)量的代碼,但是,大項(xiàng)目通常都是團(tuán)隊(duì)的勞動(dòng)成果,每個(gè)人的不同水平造就了代碼質(zhì)量的高高低低,一個(gè)人在不同時(shí)間不同環(huán)境的代碼質(zhì)量也是不同的。要指望在大片源碼面前找到高質(zhì)量,簡(jiǎn)直是天方夜譚。
也許你要從閱讀源碼中掌握某項(xiàng)技術(shù)細(xì)節(jié),比如bsp,又或者換裝,那么,最好的建議是查找相關(guān)的技術(shù)文檔以及文檔上所附帶的sample code,這種sample code一般不會(huì)附帶任何干擾,簡(jiǎn)潔得只是為了證明該技術(shù)而存在的。如果沒(méi)有這些東西,而只能從大項(xiàng)目源碼中找的話,你提前先了解了框架,能更快的查找和定位到表達(dá)該技術(shù)的文件。但是通常都會(huì)比較不幸,因?yàn)槟銥榱嗣靼走@一技術(shù),通常要先理解混入其中的另一技術(shù)。
最后談?wù)勗鯓硬拍荛喿x到高質(zhì)量的源代碼。何謂高質(zhì)量?是指算法出人一表(比如某種o(1)的排序法)?還是采用了極端深?yuàn)W的語(yǔ)言特性將某實(shí)現(xiàn)完美表達(dá)(比如模板的靈活運(yùn)用)?無(wú)論是哪種,最好的來(lái)源是書(shū),如《STL詳解》,或者《inside XX》這樣的東西。書(shū)的作者通常就是這些高質(zhì)量代碼的作者,他會(huì)帶領(lǐng)你探索這些源碼背后的真相。
posted on 2006-12-02 23:27
LOGOS 閱讀(3661)
評(píng)論(3) 編輯 收藏 引用