結對搭檔:吳瓊
被審查**
功能模組名稱
利用子集構造法實現nfa到dfa的轉換
審查人楊卓辰
審查日期
18.4.5
**名稱
利用子集構造法實現nfa到dfa的轉換
**作者
吳瓊檔案結構
重要性審查項
結論標頭檔案和定義檔案的名稱是否合理?
是標頭檔案和定義檔案的目錄結構是否合理?
是版權和版本宣告是否完整?無重要
標頭檔案是否使用了 ifndef/define/endif 預處理塊?
無頭檔案中是否只存放「宣告」而不存放「定義」
是程式的版式
重要性審查項
結論空行是否得體?
是**行內的空格是否得體?
是長行拆分是否得體?
無「」 是否各佔一行並且對齊於同一列?否重要
一行**是否只做一件事?如只定義乙個變數,只寫一條語句。否重要
if、for、while、do等語句自佔一行,不論執行語句多少都要加 「{}」。是重要
在定義變數(或引數)時,是否將修飾符 * 和 & 緊靠變數名?注釋是否清晰並且必要?否重要
注釋是否有錯誤或者可能導致誤解?否重要
類結構的public, protected, private順序是否在所有的程式中保持一致?
無命名規則
重要性審查項
結論命名規則是否與所採用的作業系統或開發工具的風格保持一致?
是識別符號是否直觀且可以拼讀?
否識別符號的長度應當符合「min-length && max-information」原則?
是程式中是否出現相同的區域性變數和全部變數?
否類名、函式名、變數和引數、常量的書寫格式是否遵循一定的規則?
是靜態變數、全域性變數、類的成員變數是否加字首?
是表示式與基本語句
重要性審查項
結論重要
如果**行中的運算子比較多,是否已經用括號清楚地確定表示式的操作順序?
是是否編寫太複雜或者多用途的復合表示式?否重要
是否將復合表示式與「真正的數學表示式」混淆?否重要
是否用隱含錯誤的方式寫if語句? 例如
(1)將布林變數直接與true、false或者1、0進行比較。
否(2)將浮點變數用「==」或「!=」與任何數字比較。
否(3)將指標變數用「==」或「!=」與null比較。
否如果迴圈體內存在邏輯判斷,並且迴圈次數很大,是否已經將邏輯判斷移到迴圈體的外面?是重要
case語句的結尾是否忘了加break?無重要
是否忘記寫switch的default分支?無重要
使用goto 語句時是否留下隱患? 例如跳過了某些物件的構造、變數的初始化、重要的計算等。無常量
重要性審查項
結論是否使用含義直觀的常量來表示那些將在程式中多次出現的數字或字串?
無在c++ 程式中,是否用const常量取代巨集常量?無重要
如果某一常量與其它常量密切相關,是否在定義中包含了這種關係?
無是否誤解了類中的const資料成員?因為const資料成員只在某個物件生存期內是常量,而對於整個類而言卻是可變的。
無函式設計
重要性審查項
結論引數的書寫是否完整?不要貪圖省事只寫引數的型別而省略引數名字。
是引數命名、順序是否合理?
是引數的個數是否太多?
否是否使用型別和數目不確定的引數?
否是否省略了函式返回值的型別?
是函式名字與返回值型別在語義上是否衝突?
否是否將正常值和錯誤標誌混在一起返回?正常值應當用輸出引數獲得,而錯誤標誌用return語句返回。
無在函式體的「入口處」,是否用assert對引數的有效性進行檢查?
無使用濫用了assert? 例如混淆非法情況與錯誤情況,後者是必然存在的並且是一定要作出處理的。
無return語句是否返回指向「棧記憶體」的「指標」或者「引用」?
無是否使用const提高函式的健壯性?const可以強制保護函式的引數、返回值,甚至函式的定義體。「use const whenever you need」
無記憶體管理
重要性審查項
結論重要
用malloc或new申請記憶體之後,是否立即檢查指標值是否為null?(防止使用指標值為null的記憶體)無重要
是否忘記為陣列和動態記憶體賦初值?(防止將未被初始化的記憶體作為右值使用)否重要
陣列或指標的下標是否越界?否重要
動態記憶體的申請與釋放是否配對?(防止記憶體洩漏)無重要
是否有效地處理了「記憶體耗盡」問題?無重要
是否修改「指向常量的指標」的內容?無重要
是否出現野指標?例如(1)指標變數沒有被初始化;(2)用free或delete釋放了記憶體之後,忘記將指標設定為null。無重要
是否將malloc/free 和 new/delete 混淆使用?無重要
malloc語句是否正確無誤?例如位元組數是否正確?型別轉換是否正 確?無重要
在建立與釋放動態物件陣列時,new/delete的語句是否正確無誤?
無c++ 函式的高階特性
重要性審查項
結論過載函式是否有二義性?無重要
是否混淆了成員函式的過載、覆蓋與隱藏?
無運算子的過載是否符合制定的程式設計規範?
無是否濫用內聯函式?例如函式體內的**比較長,函式體內出現迴圈。無重要
是否用內聯函式取代了巨集**?
無類的建構函式、析構函式和賦值函式
重要性審查項
結論重要
是否違背程式設計規範而讓c++ 編譯器自動為類產生四個預設的函式:
(1)預設的無引數建構函式;
無(2)預設的拷貝建構函式;
無(3)預設的析構函式;
無(4)預設的賦值函式。無重要
建構函式中是否遺漏了某些初始化工作?無重要
是否正確地使用建構函式的初始化表?無重要
析構函式中是否遺漏了某些清除工作?
無是否錯寫、錯用了拷貝建構函式和賦值函式?無重要
賦值函式一般分四個步驟:
(1)檢查自賦值;
無(2)釋放原有記憶體資源;
無(3)分配新的記憶體資源,並複製內容;
無(4)返回 *this。是否遺漏了重要步驟?無重要
是否正確地編寫了派生類的建構函式、析構函式、賦值函式?
無注意事項:
(1)派生類不可能繼承基類的建構函式、析構函式、賦值函式。
無(2)派生類的建構函式應在其初始化表裡呼叫基類的建構函式。
無(3)基類與派生類的析構函式應該為虛(即加virtual關鍵字)。
無(4)在編寫派生類的賦值函式時,注意不要忘記對基類的資料成員重新賦值
無類的高階特性
重要性審查項
結論重要
是否違背了繼承和組合的規則?
(1)若在邏輯上b是a的「一種」,並且a的所有功能和屬性對b而言都有意義,則允許b繼承a的功能和屬性。
無(2)若在邏輯上a是b的「一部分」(a part of),則不允許b從a派生,而是要用a和其它東西組合出b。
無其它常見問題
重要性審查項
結論重要
資料型別問題:
(1)變數的資料型別有錯誤嗎?
否(2)存在不同資料型別的賦值嗎?
否(3)存在不同資料型別的比較嗎?否重要
變數值問題:
(1)變數的初始化或預設值有錯誤嗎?
否(2)變數發生上溢或下溢嗎?
否(3)變數的精度夠嗎?否重要
邏輯判斷問題:
(1)由於精度原因導致比較無效嗎?
否(2)表示式中的優先順序有誤嗎?
否(3)邏輯判斷結果顛倒嗎?否重要
迴圈問題:
(1)迴圈終止條件不正確嗎?
否(2)無法正常終止(死迴圈)嗎?
否(3)錯誤地修改迴圈變數嗎?
否(4)存在誤差累積嗎?否重要
錯誤處理問題:
(1)忘記進行錯誤處理嗎?
否(2)錯誤處理程式塊一直沒有機會被執行?
否(3)錯誤處理程式塊本身就有毛病嗎?如報告的錯誤與實際錯誤不一致,處理方式不正確等等。
否(4)錯誤處理程式塊是「馬後炮」嗎?如在被它被呼叫之前軟體已經出錯。否重要
檔案i/o問題:
(1)對不存在的或者錯誤的檔案進行操作嗎?
否(2)檔案以不正確的方式開啟嗎?
否(3)檔案結束判斷不正確嗎?
否(4)沒有正確地關閉檔案嗎?
否
初次進行**審查,進行前認為是件十分簡單的事,真正看到**表並進行審查後才意識到**審查絕非易事。審查表中專案繁多,條理清晰,包含面十分廣闊,實際審查起來確實有一些困難。而審查**作為結對程式設計中的乙個互相理解的重要手段,掌握它是勢在必行的。
該程式的目的是利用子集構造法實現nfa到dfa的轉換及nfa的確定化。輸入形式是nfa,其中,第一列表示狀態名,終狀態用f表示;第二列和第三列分別表示輸入字元a和b所到達的狀態。輸出形式是dfa,其中,第一列表示輸入狀態名;第二列表示重新命名的狀態名,第三列和第四列分別表示輸入字元a和b所到達的狀態。初步觀察後可以發現我的搭檔的程式習慣十分良好,**書寫很規範,每行**獨佔一行沒有混淆,結構也很清晰閱讀起來賞心悅目。不過,部分變數名稱起得太過於簡單隨性,對針對**的閱讀與理解造成了一定的阻礙,同時缺少注釋,通常需要耗費較長一段時間才能完全領會一段**所能執行的操作。話雖如此,閱讀他人的**本身就不是一件容易的事,我本人在編寫**時也沒有新增注釋的習慣,總是想著自己能看懂就行了。這在結對程式設計中將是不可取的行為,會對程式進度與搭檔的工作造成很大的困擾。這同時提醒我以後編**時務必要注意規範格式,及時新增注釋。
通過這次**審查,我更加深刻地意識到自己還有很大的不足,這是在今後的學習生活中仍要不斷努力的。
第一次結對作業
5 學生資訊管理員和部門人員的檢視和填寫。6 發布部門通知,和活動地點申請。a 我們還有乙個優勢就是在檢視 時候,有乙個申請和淘汰選項,先在人工檢視之前淘汰一部分的不符合條件的人。b c d 3.這個就是學生資訊完善了。4.這裡是提交申請表,申請成為管理員。這可是很重要的啊,學生變成部員,有意願直接...
第一次結對作業
這個作業屬於哪個課程 余文錦211717353 楊銘海211703139 這個作業要求在 homework 10394 這個作業的目標 資料採集的和分析 作業正文 如下其他參考文獻 markdown排版介紹 我是來自17級實驗班的余文錦,平時喜歡看書,運動,電影等 我的結對同伴是17級實驗班楊明海,...
第一次結對作業
這個作業屬於哪個課程 王力傑學號211706199 朱紫陽學號211706160 這個作業要求在 homework 10394 這個作業的目標 資料採集的和分析 作業正文 其他參考文獻 markdown排版介紹 資料簡單分析 通過這個圖,我們可以知道,受調查者17級的佔大部分 只有2成不到的同學認為...