代碼復審結果

?說明:因為本次一些特殊的原因,我與一位韓國留學生同學、以及六班的一位同學一起結對編程。

General

  • (N) Does the code work? Does it perform its intended function, the logic is correct etc.

兩位結對的伙伴的代碼都只能實現需求功能中的一部分:

  • Z同學目前實現的功能有:只能生成10000以內數目的,沒有經過去重判斷的,整數的加減乘除題目。

   這位同學沒有實現的需求功能有:分數參與運算、生成的部分題目需含有括號、生成的題目不重復、用命令行控制參數、參數出錯的提示、給定題目和答案文件進行檢查、支持10000以上的數據量。

   ? 這位同學實現錯的功能有:值域范圍包含了-r的參數該值。

  • Y同學目前實現的功能有:從鍵盤鍵入的0~10整數范圍內的簡單的加減乘除單項的答案檢查(不包含括號)。

   這位同學沒有實現的需求功能較多,基本上沒有完成功能。

  • (Y) Is all the code easily understood?

因為他們代碼實現功能較弱,兩位同學都是用C++寫的,都只有main函數:(。相對而言代碼結構十分簡單清晰。

  • (N) (Does it conform to your agreed coding conventions? These will usually cover location of braces, variable and function names, line length, indentations, formatting, and comments.

雖然代碼行數較少,但是Z同學的代碼變量命名我不是很習慣,他的命名是這樣的:

int an = 0;int n;int r;int i=0;int nINT;int number_num;int op_num;int number;

其中各個變量旁均沒有注釋說明與解釋其意義:(。

Y同學的代碼變量命名(雖然只有兩個)也比較簡短,與我習慣的變量命名習慣略微不同。

其他方面的話,Z同學的縮進風格比較差,因為while循環等與后面是等齊的,部分代碼如下:

while(an<n){
op_num = 1+rand()%3;
number_num = op_num+1;
while(i<op_num){number=1+rand()%r;cout<<1+rand()%r;nINT = rand()%4;

Y同學相對而言縮進風格比較好,至少看起來比較舒服。

Z同學在循環的開頭有部分注釋,但是Y同學沒有注釋。

  • (N) Is there any redundant or duplicate code?

?

Z同學和Y同學的代碼中沒有冗余的代碼。(因為確實是寫得比較簡單)

?

  • (N) Is the code as modular as possible?

兩位同學都是使用C++寫的,并且都只有main函數。并沒有模塊化的思想...

  • (N) Can any global variables be replaced?

這個題選N的原因是...我的結對伙伴沒有使用全局變量。

  • (N) Is there any commented out code?

兩位同學看起來均沒有經歷過較長的代碼開發時間,所以沒有過時的代碼與調試的代碼。

  • (Y) Do loops have a set length and correct termination conditions?

有。并且從代碼來看未發現無限循環的情況。

  • Can any of the code be replaced with library functions?

Z同學的代碼和Y同學的代碼實現的功能相對簡單,能實現使用庫函數的都使用了庫函數。

  • Can any logging or debugging code be removed?

兩位同學的代碼中沒有記錄或用來debug遺留的代碼。


?

Security

  • Are all data inputs checked (for the correct type, length, format, and range) and encoded?

Z同學只是對輸入的-n參數>10000時進行了報錯處理,在其他情況如n為負數,r為負數等情況沒有進行出錯檢查。(看到這里,實際上我的代碼里也沒有這方面的出錯處理,只是對參數的輸入位置出錯時會有提示,但是沒有考慮n和r為負數的情況,真是我的失策:(。)

Y同學在自己的0~10的單項表達式的計算程序中對輸入的數字的范圍(0~10)進行了判斷與限定,但是沒有進行任何的報錯處理。

  • Where third-party utilities are used, are returning errors being caught?

Z同學未使用第三方工具;程序中并沒有主動拋出任何可控異常,一些出錯的情況使用了打印輸出的形式進行處理。

Y同學沒有任何的輸出錯誤說明。

  • Are output values checked and encoded?

兩位同學都對輸出的表達式進行了除數是否為0進行了檢查。

但是兩位同學都沒有對減法的結果是否為負數進行檢查。其余的因為功能也并未實現,所以并沒有做出該有的檢查。

  • Are invalid parameter values handled?

這兩位同學都默認用戶輸入是合法的。所以并沒有對無效的參數進行處理。


?

Documentation

  • Do comments exist and describe the intent of the code?

只有Z同學有類似于overview的簡短注釋,但是Y同學沒有任何描述性的注釋。

  • Are all functions commented?

兩位同學都只有main函數,Z同學算是都有注釋,Y同學沒有注釋。

  • Is any unusual behavior or edge-case handling described?

兩位同學都沒有對邊緣情況的處理(雖然代碼中處理了)寫進注釋中。

  • Is the use and function of third-party libraries documented?

沒有...都沒有使用...

  • Are data structures and units of measurement explained?

如果數組算是數據結構的話,Z同學使用了數組的數據結構并寫注釋說明了它的作用。

  • Is there any incomplete code? If so, should it be removed or flagged with a suitable marker like ‘TODO’?

兩位同學都有大量的為完成的需求功能的代碼需要編寫。


?

Testing

  • Is the code testable? i.e. don’t add too many or hide dependencies, unable to initialize objects, test frameworks can use methods etc.

兩位同學只有main函數,基本無法構造測試樣例。

  • Do tests exist and are they comprehensive? i.e. has at least your agreed on code coverage.

兩位同學沒有寫完,所以更沒有測試。

  • Do unit tests actually test that the code is performing the intended functionality?

沒有測試代碼。

  • Are arrays checked for ‘out-of-bound’ errors?

?

兩位同學都沒有對數組的越界進行檢測。

?

  • Could any test code be replaced with the use of an existing API?

不可以...

?

本次結對編程的伙伴代碼能力稍差一些,我們在經過商討后(已經跟羅老師說過)我打算使用帶新人的結對編程模式:我對每個功能進行詳細的模塊劃分后,作為領航員觀察他們完成部分小的模塊和一些單元測試。然后我寫一些代碼以及詳細注釋,讓他們每天進行理解與自我消化。希望他們能在和我結對編程的過程中學到一些知識:D。

轉載于:https://www.cnblogs.com/SivilTaram/p/4848296.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272898.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272898.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MVC知識點整理匯總

MVC與ASP.NET MVC基礎概念MVC是Model-View-Controller的縮寫.MVC將應用程序劃分為3大組件:模型\視圖\控制器.MVC不是ASP.NET所特有,它只是一種開發理念.java中的struts2也是一種MVC模型.ASP.NET MVC從2008年發布1.0版以來,截至2014年ASP.NET MVC最新版本已經是5.0.ASP.NET MVC從…

二進制編譯安裝mysql_數據庫(MySQL)二進制安裝+編譯安裝 + MariaDB編譯安裝

配置文件&#xff1a;my.cnf[mysql] :只用于mysql這個客戶端[mysqld][client]&#xff1a;共享與所有客戶端&#xff0c;如mysqldump等MySQL二進制包安裝&#xff1a;(在 mysql/下有個 INSTALL-BINARY 是安裝教程)1、下載通用二進制安裝包 mysql-5.5.33-linux2.6-x86.64.tar.gz…

第三次作業——結對編程

成員&#xff1a;031302439 031302415 本次實踐中我們是用phpmysql來實現所需功能的&#xff0c;其中使用到的軟件有PowerDesigner和WampServer 一. PowerDesigner使用過程 1. 運行程序&#xff0c;進入主界面&#xff0c;新建一個Model&#xff0c;設置DBMS屬性。我們…

NET比較常用的性能優化技巧

現在很多客戶也慢慢開始注重網站的性能了&#xff0c;同時有很多運營網站的公司也不像以前那樣特別在意網站是否非常漂亮&#xff0c;而把更多的精力放在了網站性能優化上面&#xff0c;提供更快更穩定的瀏覽速度&#xff0c;在這個基礎上面進行網站功能上的擴充和完善&#xf…

嵌入式控制系統和計算機系統

在嵌入式項推薦一本書&#xff1a;嵌入式系統設計&#xff08;重慶大學出版社&#xff0c;在船上鵬&#xff09;。我最近也看了一些好的內容&#xff0c;結合操作系統和一些嵌入式知識的原則&#xff0c;構成我們學習的經驗教訓有前前&#xff0c;對于某些以下總結&#xff0c;…

js修改mysql數據庫數據_Node.js操作mysql數據庫增刪改查

關于node.js操作mysql數據庫的相關介紹請閱讀全文吧。下文介紹的非常詳細&#xff0c;具體內容如下所示&#xff1a;安裝mysql模塊npm install mysql數據庫準備mysql server所在的機器IP地址是192.168.0.108&#xff0c;登錄賬戶就用root123456在mysql中創建test數據庫在test數…

Win10 注冊IIs4.0的解決方案

隨著Win10的出現&#xff0c;越來越多的人裝上了Win10&#xff0c;尤其是程序員&#xff0c;由于Win10是一個新的操作系統&#xff0c;但現有軟件的兼容性等各方面都是未知&#xff0c;難免會存在很多坑&#xff0c;就拿IIS來說&#xff0c;我剛裝完win10系統&#xff0c;然后裝…

HUST-2015 Multi-University Training Contest 9

2015 Multi-University Training Contest 9 solutions BY xudyh 1001.Expression 記dp_{l,r}dp?l,r??表示l,rl,r這段數能形成的答案總和。 枚舉最后一步操作kk&#xff0c;如果是乘法&#xff0c;答案為dp_{l,k}*dp_{k1,r}dp?l,k???dp?k1,r??&#xff0c;由于分配率這…

mysql強制禁止使用索引_MYSQL強制使用索引和禁止使用索引

MySQL強制索引和禁止某個索引1、mysql強制使用索引:force index(索引名或者主鍵PRI)例如:select * from table force index(PRI) limit 2;(強制使用主鍵)select * from table force index(ziduan1_index) limit 2;(強制使用索引"ziduan1_index")select * from table …

DotNet 資源框架整理

目錄 框架 應用模板&#xff08;Application Templates&#xff09; 人工智能&#xff08;Artificial Intelligence&#xff09; 程序集處理&#xff08;Assembly Manipulation&#xff09; 資源&#xff08;Assets&#xff09; 認證和授權&#xff08;Authentication an…

linxu其他用戶登錄mysql_Linux系統的MySQL用戶如何開啟遠程登錄權限

開啟 MySQL 的遠程登陸帳號有兩大步&#xff1a;1、確定服務器上的防火墻沒有阻止 3306 端口。MySQL 默認的端口是 3306 &#xff0c;需要確定防火墻沒有阻止 3306 端口&#xff0c;否則遠程是無法通過 3306 端口連接到MySQL的。如果您在安裝 MySQL 時指定了其他端口&#xff0…

oracle9

約束 維護數據的完整性 數據的完整性用于確保數據庫數據遵從一定的商業和邏輯規則&#xff08;比如年紀不能為-1&#xff0c;性別不能為非男女&#xff09;&#xff0c;在oracle中&#xff0c;數據完整性可以使用約束、觸發器、應用程序&#xff08;過程、函數&#xff09;三種…

memcached 適用的場景

最近在看 memcached 的公共課&#xff0c;發現memcache的確是個好東西&#xff0c;可以顯著地減小數據庫負載&#xff0c;當然我們要搞清楚&#xff0c;任何一樣技術都有它的優缺點&#xff0c;在使用它的時候&#xff0c;搞清楚它的適用場景&#xff0c;才能揚長避短&#xf…

公司來了個傻員工,改變了所有聰明的員工

公司來了個新員工&#xff0c;有點土&#xff0c;但很聽話。其它員工都把所有得工作堆給他做&#xff0c;新員工不介意&#xff0c;默默地幫他們都完成。主管看到他勤快&#xff0c;叫他幫忙跟著做很多事情&#xff0c;可他一點都不介意&#xff0c;可他幫主管做事都是義務的。…

mysql 交叉連接的用法_sql中內連接與外連接與交叉連接用法

文章介紹了在mysql中的內連接與外連接與交叉連接用法與舉例說明了&#xff0c;有需要了解的朋友可以參考一下下。(一)內連接SQL INNER JOIN 關鍵字在表中存在至少一個匹配時&#xff0c;INNER JOIN 關鍵字返回行。內連接查詢操作列出與連接條件匹配的數據行&#xff0c;它使用比…

$.ajax()參數詳解及標準寫法

1.url:要求為String類型的參數&#xff0c;&#xff08;默認為當前頁地址&#xff09;發送請求的地址。2.type:要求為String類型的參數&#xff0c;請求方式&#xff08;post或get&#xff09;默認為get。注意其他http請求方法&#xff0c;例如put和delete也可以使用&#xff0…

使用JAXP對XML文檔進行DOM解析

一、XML解析方式分為兩種&#xff1a;dom和sax dom&#xff1a;&#xff08;Document Object Model,即文檔對象模型&#xff09;是W3C組織推薦的解析XML的一種方式。sax&#xff1a;&#xff08;Simple API for XML)不是官方標準&#xff0c;但它是XML社區事實上的標準&#xf…

tfpose與openpose區別_人體姿態識別--Openpose+Tensorflow

目的復現代碼完成視頻中的人體姿態識別復現過程視頻來源&#xff1a;https://www.youtube.com/watch?vcMhWNGBW1Xg?www.youtube.com視頻動圖檢測結果下載的畫質本來就不高&#xff0c;再加上兩次錄屏&#xff0c;畫質比較渣。首先確認工程所需要的依賴&#xff1a;python3ten…

讓 步( 寫的太好了!)

一個不懂得為親人讓步&#xff0c;為朋友讓步&#xff0c;為愛人讓步&#xff0c;為合作伙伴讓步的人&#xff0c;是缺乏胸襟的人&#xff0c;最無能和不可交的人。試問一個連自己人都斤斤計較的人可交往嗎&#xff01;長不大的人最重要的標志&#xff0c;就是跟自己人&#xf…

Android學習手記(2) Activity生命周期

1. 單個Activity的生命周期 當只有一個Activity的時候&#xff0c; 首先執行onCreate->onStart->onResume。 這時&#xff0c; 窗口便顯示在屏幕上了。 然后我們按返回鍵退到桌面的時候&#xff0c;便執行onPause->onStop。這時候&#xff0c; 如果我們在最近使用程序…