路過(guò)的小游俠 + 《軟件工程(C編碼實(shí)踐篇)》MOOC課程作業(yè)http://mooc.study.163.com/course/USTC-1000002006
GitHub: [lab5]:https://github.com/littleRanger/SoftwareEngineering/tree/master/lab5
一. 實(shí)驗(yàn)?zāi)康?/h2>
給Linktable增加Callback方式的接口
在menu中用Callback方式查詢鏈表
進(jìn)一步改進(jìn)Linktable的Callback方式的接口
用callback函數(shù)實(shí)現(xiàn)的多態(tài)淺析
信息隱藏
二. 實(shí)驗(yàn)內(nèi)容
給lab5-1.tar.gz找bug,quit命令無(wú)法運(yùn)行的bug
利用callback函數(shù)參數(shù)使Linktable的查詢接口更加通用
注意接口的信息隱藏
三. 實(shí)驗(yàn)過(guò)程
- 找到bug
問(wèn)題: quit 命令找不到命令
一層一層函數(shù)棧, 尋找, 發(fā)現(xiàn)在SearchLinkTableNode函數(shù)中, 遍歷到鏈表尾巴就結(jié)束了,while(pNode!=pTail) 導(dǎo)致如果命令是尾巴節(jié)點(diǎn), 則無(wú)法進(jìn)去while循環(huán)體內(nèi)部, 也就無(wú)法執(zhí)行condition(pNode)的確認(rèn)鉤子函數(shù).
只要while語(yǔ)句的結(jié)束條件為 pNode!=NULL即可

修復(fù)quit的bug
2.利用callback函數(shù)參數(shù)使Linktable的查詢接口更加通用
先將cmd字符串取消定義為全局變量,然后修改callback函數(shù)。
tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable,intConditon(tLinkTableNode * pNode,void* args),void* args);
記得同時(shí)修改該函數(shù)的申明和使用

效果截圖
3. 注意信息的隱藏
在linktable.c中定義Linktable結(jié)構(gòu)體,而在linktable.h中只留下LinkTable結(jié)構(gòu)的聲明。
總結(jié):
本次實(shí)驗(yàn)主要學(xué)會(huì)了如何callback函數(shù)的處理方式.
實(shí)踐了對(duì)外暴露接口的處理, 提高了對(duì)模塊化理解.
最后git 實(shí)踐了git pull自動(dòng)merge功能, 原因在于在網(wǎng)頁(yè)給lab4 commit 過(guò)readme,

lab5-git.png