我們在剛開始上課的時候介紹過乙個小學四則運算自動生成程式的例子,請實現它,要求:
駕駛員:呂思達
能夠完成全部**工作,程式基本實現全部要求功能,並將**上傳至coding.net或者github**託管系統中
能夠對導航員在本次程式設計工作中起到的作用給出客觀評價,並完成500字以上的總結
領航員:李赫
能夠輔助駕駛員完成全部**工作,並且為關鍵函式選用合適的覆蓋標準設計測試用例,並編寫**進行單元自動測試
能夠根據上次作業的**檢查表對駕駛員的本次工作進行評價
能夠對本次工作完成500字以上的總結
這是**位址
功能模組名稱
審查人李赫
審查日期
4月17日
**名稱
四則運算自動生成程式
**作者
呂思達
檔案結構
重要性
審查項結論
標頭檔案和定義檔案的名稱是否合理?
y 標頭檔案和定義檔案的目錄結構是否合理?
y 版權和版本宣告是否完整?
n 重要
標頭檔案是否使用了 ifndef/define/endif 預處理塊?
y 標頭檔案中是否只存放「宣告」而不存放「定義」
n 程式的版式
重要性
審查項結論
空行是否得體?
y **行內的空格是否得體?
y 長行拆分是否得體?
n 「」 是否各佔一行並且對齊於同一列?
y 重要
一行**是否只做一件事?如只定義乙個變數,只寫一條語句。
y 重要
if、for、while、do等語句自佔一行,不論執行語句多少都要加 「{}」。
y 重要
在定義變數(或引數)時,是否將修飾符 * 和 & 緊靠變數名?注釋是否清晰並且必要?
y 重要
注釋是否有錯誤或者可能導致誤解?
n 重要
類結構的public, protected, private順序是否在所有的程式中保持一致?
命名規則
重要性
審查項結論
重要命名規則是否與所採用的作業系統或開發工具的風格保持一致?
y 識別符號是否直觀且可以拼讀?
y 識別符號的長度應當符合「min-length && max-information」原則?
y 重要
程式中是否出現相同的區域性變數和全部變數?
n 類名、函式名、變數和引數、常量的書寫格式是否遵循一定的規則?
y 靜態變數、全域性變數、類的成員變數是否加字首?
表示式與基本語句
重要性
審查項結論
重要如果**行中的運算子比較多,是否已經用括號清楚地確定表示式的操作順序?
y 是否編寫太複雜或者多用途的復合表示式?
n 重要
是否將復合表示式與「真正的數學表示式」混淆?
n 重要
是否用隱含錯誤的方式寫if語句? 例如
(1)將布林變數直接與true、false或者1、0進行比較。
n (2)將浮點變數用「==」或「!=」與任何數字比較。
n (3)將指標變數用「==」或「!=」與null比較。
n 如果迴圈體內存在邏輯判斷,並且迴圈次數很大,是否已經將邏輯判
n 斷移到迴圈體的外面?
重要case語句的結尾是否忘了加break?
n 重要
是否忘記寫switch的default分支?
y 重要
使用goto 語句時是否留下隱患? 例如跳過了某些物件的構造、變數的初始化、重要的計算等。
n 常量
重要性
審查項結論
是否使用含義直觀的常量來表示那些將在程式中多次出現的數字或字串?
y 在c++ 程式中,是否用const常量取代巨集常量?
n 重要
如果某一常量與其它常量密切相關,是否在定義中包含了這種關係?
n 是否誤解了類中的const資料成員?因為const資料成員只在某個物件
生存期內是常量,而對於整個類而言卻是可變的。
函式設計
重要性
審查項結論
引數的書寫是否完整?不要貪圖省事只寫引數的型別而省略引數名字。
y 引數命名、順序是否合理?
y 引數的個數是否太多?
n 是否使用型別和數目不確定的引數?
n 是否省略了函式返回值的型別?
n 函式名字與返回值型別在語義上是否衝突?
n 重要
是否將正常值和錯誤標誌混在一起返回?正常值應當用輸出引數獲得,而錯誤標誌用return語句返回。
n 重要
在函式體的「入口處」,是否用assert對引數的有效性進行檢查?
n 重要
使用濫用了assert? 例如混淆非法情況與錯誤情況,後者是必然存在的並且是一定要作出處理的。
n 重要
return語句是否返回指向「棧記憶體」的「指標」或者「引用」?
是否使用const提高函式的健壯性?const可以強制保護函式的引數、返回值,甚至函式的定義體。「use const whenever you need」
n c++ 函式的高階特性
重要性
審查項結論
過載函式是否有二義性?
n 重要
是否混淆了成員函式的過載、覆蓋與隱藏?
n 運算子的過載是否符合制定的程式設計規範?
y 是否濫用內聯函式?例如函式體內的**比較長,函式體內出現迴圈。
n 重要
是否用內聯函式取代了巨集**?
n 其它常見問題
重要性
審查項結論
重要資料型別問題:
(1)變數的資料型別有錯誤嗎?
n (2)存在不同資料型別的賦值嗎?
n (3)存在不同資料型別的比較嗎?
n 重要
變數值問題:
(1)變數的初始化或預設值有錯誤嗎?
n (2)變數發生上溢或下溢嗎?
n (3)變數的精度夠嗎?
n 重要
邏輯判斷問題:
(1)由於精度原因導致比較無效嗎?
n (2)表示式中的優先順序有誤嗎?
n (3)邏輯判斷結果顛倒嗎?
n 重要
迴圈問題:
(1)迴圈終止條件不正確嗎?
n (2)無法正常終止(死迴圈)嗎?
n (3)錯誤地修改迴圈變數嗎?
n (4)存在誤差累積嗎?
n 重要
錯誤處理問題:
(1)忘記進行錯誤處理嗎?
n (2)錯誤處理程式塊一直沒有機會被執行?
n (3)錯誤處理程式塊本身就有毛病嗎?如報告的錯誤與實際錯誤不一致,處理方式不正確等等。
n (4)錯誤處理程式塊是「馬後炮」嗎?如在被它被呼叫之前軟體已經出錯。
n 重要
檔案i/o問題:
(1)對不存在的或者錯誤的檔案進行操作嗎?
n (2)檔案以不正確的方式開啟嗎?
n (3)檔案結束判斷不正確嗎?
n (4)沒有正確地關閉檔案嗎?
n
這次作業呂思達同學作為駕駛員,負責編寫**工作,他的個人能力很強,用c++寫了算式生成和計算兩個**,完成了這次作業,和他合作很愉快。**測試方面我則是完全沒有頭緒。在進行結對程式設計時,有很多好處。可以遇到了不起的人,並且和他們成為朋友。認識到自己的不足,提示自己的能力。
軟體工程結對程式設計作業
功能模組名稱 語法分析 審查人王斌 審查日期 2018 4 6 名稱 123 作者 李少鵬檔案結構 重要性 審查項結論 標頭檔案和定義檔案的名稱是否合理?是標頭檔案和定義檔案的目錄結構是否合理?是版權和版本宣告是否完整?無重要 標頭檔案是否使用了 ifndef define endif 預處理塊?無...
軟體工程(2018)第5次團隊作業
剛剛和同學組成專案團隊的時候,我們就立刻開始進行專案的選擇。其實最開始的想法並不是部落格頁面的設計,但是經過前幾次個人作業的編輯,我們發現了乙個問題,那就是現在所用的部落格 似乎並不是很好用,根據這個方向,我們仔細的檢視了一下現在主流的部落格 發現現在大部分的部落格 想靜下心來讀 寫部落格,都容易被...
2018軟體工程第四次作業(結對一)
一 審查表 參考部落格 c c 審查 功能模組名稱 詞法分析 審查人何濤 審查日期 2018.4.5 名稱 詞法分析 作者 劉子君檔案結構 重要性 審查項結論 標頭檔案和定義檔案的名稱是否合理?是標頭檔案和定義檔案的目錄結構是否合理?是版權和版本宣告是否完整?無重要 標頭檔案是否使用了 ifndef...