資源描述:
《如何快速讀懂代碼》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、如何快速讀懂大型C++程序代碼?(2012-06-1411:25:03)標(biāo)簽:?c編程分類:?C學(xué)習(xí)六個(gè)章節(jié):(1)讀懂程序碼,使心法皆為我所用。(2)摸清架構(gòu),便可輕松掌握全貌。(3)優(yōu)質(zhì)工具在手,讀懂程序非難事。(4)望文生義,進(jìn)而推敲組件的作用。(5)找到程序入口,再由上而下抽絲剝繭。(6)閱讀的樂趣,透過程序碼認(rèn)識(shí)作者。閱讀他人的程序碼(1)---讀懂程序碼,使心法皆為我所用程序碼是別人寫的,只有原作者才真的了解程序碼的用途及涵義。許多程序人心里都有一種不自覺的恐懼感,深怕被迫去碰觸其他人所寫的程序碼。但是,與其抗拒接收別人的程序碼,不如徹底了解相關(guān)的語言和慣例,當(dāng)成是培養(yǎng)自我實(shí)力的
2、基石。對(duì)大多數(shù)的程序人來說,撰寫程序碼或許是令人開心的一件事情,但我相信,有更多人視閱讀他人所寫成的程序碼為畏途。許多人寧可自己重新寫過一遍程序碼,也不愿意接收別人的程序碼,進(jìn)而修正錯(cuò)誤,維護(hù)它們,甚至加強(qiáng)功能。這其中的關(guān)鍵究竟在何處呢?若是一語道破,其實(shí)也很簡單,程序碼是別人寫的,只有原作者才真的了解程序碼的用途及涵義。許多程序人心里都有一種不自覺的恐懼感,深怕被迫去碰觸其他人所寫的程序碼。這是來自于人類內(nèi)心深處對(duì)于陌生事物的原始恐懼。讀懂別人寫的程序碼,讓你收獲滿滿不過,基于許多現(xiàn)實(shí)的原因,程序人時(shí)常受迫要去接收別人的程序碼。例如,同事離職了,必須接手他遺留下來的工作,也有可能你是剛進(jìn)部
3、門的菜鳥,而同事經(jīng)驗(yàn)值夠了,升級(jí)了,風(fēng)水輪流轉(zhuǎn),一代菜鳥換菜鳥。甚至,你的公司所承接的專案,必須接手或是整合客戶前一個(gè)廠商所遺留下來的系統(tǒng),你們手上只有那套系統(tǒng)的原始碼(運(yùn)氣好時(shí),還有數(shù)量不等的文件)。諸如此類的故事,其實(shí)時(shí)常在程序人身邊或身上持續(xù)上演著。許多程序人都將接手他人的程序碼,當(dāng)做一件悲慘的事情。每個(gè)人都不想接手別人所撰寫的程序碼,因?yàn)椴幌牖〞r(shí)間去探索,寧可將生產(chǎn)力花在產(chǎn)生新的程序碼,而不是耗費(fèi)在了解這些程序碼上。先了解系統(tǒng)架構(gòu)與行為模式,再細(xì)讀倘若撰寫程序碼是程序人的重要技藝之一,那么讀懂別人的程序碼,接著加以修改,也勢必是另一個(gè)重要的技藝。如果你不能熟悉這項(xiàng)工作,不僅在遭逢你所
4、不愿面對(duì)的局面時(shí),無法解決眼前接手他人程序碼的難題,更重要的是,當(dāng)你看著眼前現(xiàn)成的程序碼,卻不知如何從中擷取自己所需,導(dǎo)致最后只能入寶山空手回,望之興嘆。接觸他人的程序碼,大致上可以分為三種程度:一,了解,二,修改,擴(kuò)充,三,抽取,提煉。了解別人的程序碼是最基礎(chǔ)的工作,倘若不能了解自己要處理的程序碼,就甭論修改或擴(kuò)充,更不可能去蕪存菁,從中萃取出自己所需,回收再利用別人所撰寫的程序碼。雖說是“閱讀”,但程序碼并不像文章或小說一樣,透過這種做法,便能夠獲得一定程度的了解。閱讀文章或小說時(shí),幾乎都是循序地閱讀,你只消翻開第一頁,一行行閱讀下去即可。但是,有許多程序人在試著閱讀其他人的程序碼時(shí),卻
5、往往有不知如何讀起的困難?;蛟S找到系統(tǒng)的第一頁(也就是程序碼執(zhí)行的啟始點(diǎn))并不難,但是復(fù)雜度高的系統(tǒng),有時(shí)十分龐大,有時(shí)千頭萬緒。從程序碼的啟始點(diǎn)開始讀起,一來要循序讀完所有的程序碼曠日費(fèi)時(shí),二來透過這種方式來了解系統(tǒng),很難在腦中構(gòu)建出系統(tǒng)的面貌,進(jìn)而了解到系統(tǒng)真正的行為。所以,閱讀程序碼的重點(diǎn),不在于讀完每一行程序碼,而是在于有效率地透過探索及閱讀,從而了解系統(tǒng)的架構(gòu)及行為模式。以便在你需要了解任何片段的細(xì)節(jié)實(shí)作時(shí),能夠很快在腦上對(duì)映到具體的程序碼位置,直到那一刻,才是細(xì)讀的時(shí)機(jī)。熟悉溝通語言與慣例用語不論如何,有些基本的準(zhǔn)備,是閱讀他人程序碼時(shí)必須要有的。首先,你最好得了解程序碼寫成的程
6、序語言。想要讀懂法文寫成的小說,總不能連法文都不懂吧。有些情況則很特殊。我們雖然不懂該程序碼撰寫所用的語言,但是因?yàn)楝F(xiàn)代語言的高階化,而且流行的程序語言多半都是血統(tǒng)相近,所以即使不那么熟悉,有時(shí)也可勉力為之。除了認(rèn)識(shí)所用語言之外,再來就是要先確認(rèn)程序碼所用的命名慣例(命名慣例)。了解命名慣例很重要,不同的程序人或開發(fā)團(tuán)隊(duì),差異可能很大。這命名慣例涵蓋的范圍通常包括了變數(shù)的名稱,函式的名稱,類別(如果是物件導(dǎo)向的話)的名稱,原始碼檔案,甚至是專案建構(gòu)目錄的名稱。倘若使用了像設(shè)計(jì)模式之類的方法,這些名稱更有一些具體的表述方式。命名慣例有點(diǎn)像是程序人在程序語言之上,另行建構(gòu)的一組溝通行話。程序人會(huì)
7、透過共通約束,遵守的命名慣例,來表達(dá)一些較高階的概念。例如,有名的匈牙利式命名法,便將變數(shù)名稱以屬性,型別,說明合并在一起描述。對(duì)程序人來說,這種方式能夠提供更豐富的資訊,以了解該變數(shù)的作用及性質(zhì)。對(duì)程序碼閱讀來說,熟悉這個(gè)做法之所以重要,是因?yàn)楫?dāng)你了解整個(gè)系統(tǒng)所采用的慣例時(shí),你便能試著以他們所共同操用的語匯來進(jìn)行理解。倘若,不能了解其所用的慣例,那么這些額外提供的資訊,就無法為你所用。像以設(shè)計(jì)模式寫成的程序