軟件工程第5次做業的代碼審查信息

審查基本信息

  • 功能模塊名稱:表達式生成器
  • 審查人:鄭竣太
  • 審查日期:2019年4月23日
  • 代碼名稱:main.cpp
  • 代碼做者:顧苡銘

聲明工做與代碼文件管理(Declaration & Code Management)

審查項 重要 評估 備註
using是否包含了全部可能使用的庫?
using是否包含多餘的庫(未使用的) × 有些using由項目模板自動生成
版權和版本聲明是否完整? × × 此代碼用於課程設計,沒有重視版本控制
類代碼文件名與類的名是否保持一致 × √(Partly) 自定義類庫中一個cs文件包含了多個類,這些類之間存在繼承和引用關係
是否經過提出公共子式的方式將一些並列的做用域下同種用途的局部變量聲明提到做用域外 ×
設計器文件與窗體代碼是否保持對應關係並一致
是否擅自修改了設計器代碼(本應當由設計器自動生成) ×

代碼風格(Code Style)

審查項 重要 評估 備註
空行是否得體? ×
長行拆分是否得體? × -
{} 是否各佔一行而且對齊於同一列? ×
一行代碼是否只作一件事?如只定義一個變量,只寫一條語句。
ifforwhiledo等語句自佔一行,不論執行語句多少都要加 {}
註釋是否有錯誤或者可能致使誤解? ×
類結構的public, protected, private順序是否在全部的程序中保持一致? ×

命名規範(Naming Convention)

審查項 重要 評估 備註
命名規則是否與所採用的操做系統或開發工具的風格保持一致? × 窗體控件的名稱不符合IDE的提倡格式(提倡PascalCase但使用了camelCase)但仍然符合某種規範
標識符是否直觀且能夠拼讀? × 但縮寫較多
標識符的長度應當符合「min-length && max-information」原則? × 僅限於知足上一條的內容
程序中是否出現相同的局部變量和所有變量? 局部變量名稱可能和某函數的參數名相同,但這不影響
類名、函數名、變量和參數、常量的書寫格式是否遵循必定的規則? ×
靜態變量、全局變量、類的成員變量是否加前綴? × ×

表達式與基本語句 (Expressions & Statements)

審查項 重要 評估 備註
若是代碼行中的運算符比較多,是否已經用括號清楚地肯定表達式的操做順序?
是否編寫太複雜或者多用途的複合表達式? × ×
是否將複合表達式與「真正的數學表達式」混淆? × ×
是否用隱含錯誤的方式寫if語句? ×
case語句的結尾是否忘了加break × C#中case後不加break是語法錯誤
是否忘記寫switchdefault分支? × default分支用於拋出異常

常量(Constants)

審查項 重要 評估 備註
是否使用含義直觀的常量來表示那些將在程序中屢次出現的數字或字符串? × ×

函數(Functions)

審查項 重要 評估 備註
參數的書寫是否完整?不要貪圖省事只寫參數的類型而省略參數名字。 × C#不容許省略參數名
參數命名、順序是否合理? ×
參數的個數是否太多? × ×
是否使用類型和數目不肯定的參數? × 使用了param參數表
函數名字與返回值類型在語義上是否衝突? × ×
是否將正常值和錯誤標誌混在一塊兒返回?正常值應當用輸出參數得到,而錯誤標誌用return語句返回。 × 這些函數沒有返回錯誤標誌,正常值直接返回得出,發生錯誤直接拋出異常
在函數體的「入口處」,是否用assert對參數的有效性進行檢查? × 沒有使用assert
濫用了assert? 例如混淆非法狀況與錯誤狀況,後者是必然存在的而且是必定要做出處理的。 × - 同上
是否在發生預料以外的情形下拋出了異常

內存管理(Memory Management)

審查項 重要 評估 備註
是否忘記爲數組和動態內存賦初值?(防止將未被初始化的內存做爲右值使用) - 同上
數組或容器的下標是否越界? ×
動態內存的申請與釋放是否配對?(防止內存泄漏) - C#存在GC機制
是否有效地處理了「內存耗盡」問題? × 但判斷了耗盡情形
是否對局部生成的對象使用了using × ×

C#函數特性

審查項 重要 評估 備註
重載函數是否有二義性? ×
是否混淆了成員函數的重載、覆蓋與隱藏? ×
運算符的重載是否符合制定的編程規範? - 沒有重載運算符
傳引用時是否正確地使用了refout - 沒有傳引用
提供默認參數的參數是否被列到最後
動態參數列表是否被列到最後

類(Classes)

審查項 重要 評估 備註
構造函數中是否遺漏了某些初始化工做? ×
是否正確地使用構造函數的初始化表?
是否錯寫、錯用了構造函數和? ×
是否違背了繼承和組合的規則? ×
是否使用了屬性(Properties)封裝了私有的成員或只讀的值 但不徹底
是否使用單例模式替代靜態類 × ×
是否混淆使用了virtualabstract ×

其它常見問題(Miscellaneous)

審查項 重要 評估 備註
變量的數據類型有錯誤嗎? ×
存在不一樣數據類型的賦值嗎? ×
存在不一樣數據類型的比較嗎? ×
變量的初始化或缺省值有錯誤嗎? ×
變量發生上溢或下溢嗎? ×
變量的精度夠嗎?
因爲精度緣由致使比較無效嗎? ×
表達式中的優先級有誤嗎? ×
邏輯判斷結果顛倒嗎? ×
循環終止條件是否正確?
忘記進行錯誤處理嗎? ×
錯誤處理程序塊一直沒有機會被運行? 部分處理程序沒有執行機會
錯誤處理程序塊自己就有問題嗎?如報告的錯誤與實際錯誤不一致,處理方式不正確等等 ×
文件以不正確的方式打開嗎? ×
沒有正確地關閉文件嗎? ×
發生類型強轉時,是否使用類推薦的轉換函數或裝拆箱替代強轉 ×
事件訂閱時是否充分利用EventArgs類型對象進行數據傳遞 × 事件訂閱沒有傳遞任何數據
是否使用了非安全編程代碼(例如在C#中使用指針) × .NET託管下沒有啓用非安全代碼
是否對可能發生溢出的情形指定了uncheck ×
相關文章
相關標籤/搜索