2018軟體工程第四次作業(結對一)

2022-09-04 13:09:09 字數 4940 閱讀 9509

一、**審查表

參考部落格:c/c++**審查

功能模組名稱

詞法分析

審查人何濤

審查日期

2018.4.5

**名稱

詞法分析

**作者

劉子君檔案結構

重要性

審查項結論

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

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

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

標頭檔案是否使用了 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)沒有正確地關閉檔案嗎?

####二、個人感想

在進行**審查之前看了一下《**審查表》,才知道編**還要注意很多事項。之前以為寫**就是演算法正確,能夠得到正確的輸出就是好的程式。在寫**時還要注意保護自己的版權資訊。下面談一下劉子君同學的**存在的問題。

首先,瀏覽整個程式,感覺整個程式還是比較規範的。用幾個函式來完成整個演算法,這樣程式的可讀性較好,讀起來很容易上手。但是部分重要變數、函式沒有注釋,讀起來還是比較費勁的,需要反覆讀幾遍才能理解該函式完成的功能。其次,部分「{ 」 和「 }」 沒有單獨佔一行也沒有,顯得結構不是明顯。同時,變數賦時「=」 兩側沒有空格,使變數賦值不容易看出。

通過《**審查表 》中可以看出寫**還是有很多規範要遵守的。寫好的**不光是給程式設計師自己看的,在團隊開發中也需要給團隊使用。沒有乙個良好的規範合成的**一定有很多低階的bug。在寫變數和函式時,一定要寫好注釋,為自己的測試、團隊的**合成和測試、後期的執行維護提供了方便。命名時不能再使用簡單的a、b、c、d來命名,要是用有意義的單詞來表示。是內外行人一眼都能看出。同時也要注意在**前後要註明自己的版權資訊。良好的程式設計規範是要通過自己不斷地聯絡來逐漸養成的。在讀別人**時要尋找別人的錯誤和長處來提高自身的編碼規範。

軟體工程第四次作業 結對專案

內容馮洋月 由黃杉杉複審 結果如下 黃杉杉 由馮洋月複審 結果如下 1.概要部分 1.是否符合需求和規格說明是是 2.設計是否考慮周全是是 3.可讀性 可讀性較高,思路清晰 可讀性較高有注釋 4.容易維護麼 容易較容易 5.的每一行都執行並檢查過了嗎 已成功通過執行並檢驗 已檢查3.1.設計是否遵從...

軟體工程第四次作業

部落格資訊 瀋陽航空航天大學計算機學院2020軟體工程作業 作業要求 課程目標 熟悉乙個 高質量 軟體的開發過程 作業目標 結對程式設計練習 一 題目 二 位址 三 執行結果 四 與隊友合作 工作記錄表 專案預計 實際設計時間 1h3h 編碼時間 3h5h 測試時間 30min 30min 行數 2...

軟體工程第四次作業

功能模組名稱 簡單的語法分析程式 審查人王澤鵬 審查日期 2017.4.4 名稱 黑白棋遊戲 作者 白璐檔案結構 重要性審查項 結論標頭檔案和定義檔案的名稱是否合理?合理標頭檔案和定義檔案的目錄結構是否合理?合理版權和版本宣告是否完整?不完整重要 標頭檔案是否使用了 ifndef define en...