[C++高級教程]從零開始開發(fā)服務(wù)器框架(sylar)

希望大家在前進的道路,加油干
1.方法論
1.1如何閱讀這個大型項目
(1)先建好環(huán)境,讓程序能運行,玩一遍
當(dāng)你拿到一個程序后,即使你不看代碼,你也應(yīng)該知道它是干什么的吧!干啥都不知道,不用看了。
(2)看想辦法掌握程序的結(jié)構(gòu)
作者微博、Google、百度、PDSN、等找到程序的體系結(jié)構(gòu),完整的文檔
(3)先體系再細節(jié);先平面再線點。
先整體再局部,先平面再線點。"大膽猜測,小心求證"。在閱讀程序的過程中,我們往往對某一處或幾處邏輯不肯定,可能是這樣,也可能是那樣。
(4)斷點調(diào)試、日志調(diào)試。
(5)忽略細節(jié),先前不要關(guān)注分支
Main開始一字一句的解讀,遇到一個問題,直到他認為這個問題已經(jīng)處理不再是個問題的時候,才進行下一步。
這是一個做事方法問題:這樣無疑會導(dǎo)致整個進度的延緩。若我們一開始只關(guān)注整體結(jié)構(gòu)(一個宏觀的大概的流程),而忽略掉那些細支末節(jié),則很有利。
那些可以忽略呢?
如有些函數(shù)一看函數(shù)名便知道是干什么的,沒有要一開始便深入。
有些系統(tǒng)中的分支(如某此特殊場景下才執(zhí)行的邏輯)、不重要的功能,則一掃而過
(6)其它
善用搜索引擎
先整體再局部,先宏觀再微觀,先流程再細節(jié)。
1.2.如何閱讀大型項目的C++代碼
章節(jié)0:了解文檔
要搞清楚別人的代碼,首先,你要了解代碼涉及的領(lǐng)域知識,這是最重要的,不懂領(lǐng)域知識,只看代碼本身,不可能搞的明白。
其次,你得找各種文檔:需求文檔(要做什么),設(shè)計文檔(怎么做的),先搞清楚你即將要閱讀是什么玩意,至少要把代碼的整體結(jié)構(gòu)搞清楚:整體架構(gòu)如何,有幾個模塊,模塊間通信方式,運行環(huán)境,構(gòu)建工具等等。如果只關(guān)注一部分,重點關(guān)注將會屬于你的模塊,其他代碼了解下即可
章節(jié)1:熟悉語法
熟悉C++語法與新特性
熟悉命名規(guī)范(變量 函數(shù) 類等) ->快速了解作用及含義, 有時通過名字可以看出設(shè)計模式等 不用深入探索源碼也能知道含義?有文檔說明最好 沒有也可以靠時間與經(jīng)驗發(fā)掘.
章節(jié)2:摸清架構(gòu)(需要拆細)
自上而下,了解全貌而非細節(jié), 了解整個系統(tǒng)架構(gòu), 重點關(guān)注屬于你的模塊.
章節(jié)3:熟悉工具
熟悉相應(yīng)的生成/測試工具 編譯腳本等, 方便熟悉程序整體功能/流程.
章節(jié)4:細看模塊(接口 算法需要拆細)
找到程序入口,自上而下抽絲剝繭.
章節(jié)5:輸出產(chǎn)物
有目的性的閱讀可以提高干勁,提前討論好需要輸出/補充的內(nèi)容,按要求補充/輸出成果物.
2.sylar項目的運行:
https://www.midlane.top/wiki/pages/viewpage.action?pageId=16416843
按照這個老哥的配置先把這個老哥的項目跑起來(這個項目跟sylar老師講的差不多)
注意Boost和yaml-cpp的安裝,其他安裝照上面老哥的來
ubuntu下Boost安裝:https://blog.csdn.net/qq_36666115/article/details/131015894
ubuntu下yaml-cpp安裝與使用:https://www.cnblogs.com/zwjason/p/17031701.html
3.項目的流程或者結(jié)構(gòu)理解:
作者主頁:http://www.sylar.top
參考2:https://www.midlane.top/wiki/pages/viewpage.action?pageId=16416843
參考3:流程的理解,感覺這個會好一點:https://juejin.cn/post/7241821748211777593#heading-51