軟體工程結對作業

2022-07-29 07:30:12 字數 4810 閱讀 9569

馮雅婧coding.net位址

c++**審查表

功能模組名稱

班級類的封裝

審查人劉文彤

審查日期

2019.4.24

**名班級類的封裝

**作者

馮雅婧檔案結構

重要性審查項

結論標頭檔案和定義檔案的名稱是否合理?

是標頭檔案和定義檔案的目錄結構是否合理?

是版權和版本宣告是否完整?否重要

標頭檔案是否使用了 ifndef/define/endif 預處理塊?

否標頭檔案中是否只存放「宣告」而不存放「定義」

是程式的版式

重要性審查項

結論空行是否得體?

是**行內的空格是否得體?

否長行拆分是否得體?

是「」 是否各佔一行並且對齊於同一列?是重要

一行**是否只做一件事?如只定義乙個變數,只寫一條語句。是重要

if、for、while、do等語句自佔一行,不論執行語句多少都要加 「{}」。是重要

在定義變數(或引數)時,是否將修飾符 * 和 & 緊靠變數名?注釋是否清晰並且必要?是重要

注釋是否有錯誤或者可能導致誤解?否重要

類結構的public, protected, private順序是否在所有的程式中保持一致?

是命名規則

重要性審查項

結論重要

命名規則是否與所採用的作業系統或開發工具的風格保持一致?

是識別符號是否直觀且可以拼讀?

否識別符號的長度應當符合「min-length && max-information」原則?是重要

程式中是否出現相同的區域性變數和全部變數?

否類名、函式名、變數和引數、常量的書寫格式是否遵循一定的規則?

是靜態變數、全域性變數、類的成員變數是否加字首?

否表示式與基本語句

重要性審查項

結論重要

如果**行中的運算子比較多,是否已經用括號清楚地確定表示式的操作順序?

是是否編寫太複雜或者多用途的復合表示式?否重要

是否將復合表示式與「真正的數學表示式」混淆?否重要

是否將復合表示式與「真正的數學表示式」混淆?

否(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語句是否正確無誤?例如位元組數是否正確?型別轉換是否正 確?

未使用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)沒有正確地關閉檔案嗎?

馮雅婧同學第一次結對作業寫的是c++班級類。**總體上來看寫的比較規範,並且思路清晰,沒有邏輯上的錯誤。但是還是存在一些不規範的地方,例如if、for、while、do等語句中有時只有一句話時未加 「{}」,有的地方加了花括號沒有獨佔一行;沒有注釋,**理解起來有些難;變數,函式的命名不規範,有些變數在一行命名,沒有做到「每行**應該只做一件事」 , 本題雖然是類的封裝但是沒有用到c++的高階特性,如繼承,過載,多型等。總體來說,**寫的還是不錯的。

通過本次閱讀同伴的**,我收穫了很多,學到了一些隊友程式設計的好習慣。雖然其中有一些錯誤,但是通過審查發現這些錯誤,不僅使同伴的程式設計能力的到提高,也讓我了解了更多的關於**規範的知識。總體來說此次合作成果不錯,我們要繼續努力完成下乙個挑戰。

軟體工程結對作業

一 題目簡介 本程式是乙個掃雷小遊戲。程式的功能是在執行後生成指定的地雷個數,在滑鼠左鍵點選下尋找地雷,右鍵點選下標記地雷,點選重新開始的按鈕重新開始一盤新遊戲,並給出勝利和失敗的條件 標出所有的地雷和左鍵點中地雷。二 結對分工及過程 結對 趙彤 顧曉倩 趙彤 的編寫和 規範 顧曉倩 程式的分析和程...

軟體工程 結對作業(Second)

我們在剛開始上課的時候介紹過乙個小學四則運算自動生成程式的例子,請實現它,要求 能夠自動生成四則運算練習題 可以定製題目數量 使用者可以選擇運算子 使用者設定最大數 如十以內 百以內等 使用者選擇是否有括號 是否有小數 使用者選擇輸出方式 如輸出到檔案 印表機等 最好能提供圖形使用者介面 根據自己能...

軟體工程結對程式設計作業

功能模組名稱 語法分析 審查人王斌 審查日期 2018 4 6 名稱 123 作者 李少鵬檔案結構 重要性 審查項結論 標頭檔案和定義檔案的名稱是否合理?是標頭檔案和定義檔案的目錄結構是否合理?是版權和版本宣告是否完整?無重要 標頭檔案是否使用了 ifndef define endif 預處理塊?無...