代码复审结果

 说明:因为本次一些特殊的原因,我与一位韩国留学生同学、以及六班的一位同学一起结对编程。

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.mzph.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; 如果我们在最近使用程序…