zoukankan      html  css  js  c++  java
  • 代码复审结果

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

    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。

  • 相关阅读:
    不同包中继承关系访问protected内部类问题
    LinuxMM--MemoryHierarchy
    LinuxMM--Memory Pressure
    多态实验:基类——子类成员
    使用vue开发的word-cloud 词云组件
    基于mui.PopPicker的可多选下拉多选的底部弹出组件
    基于mui.popover的自定义底部弹出框-支持多选和搜索筛选的弹出列表组件改造以及mui.prompt添加自定义内容
    js去空 去除空格
    css+js控制文字显示行数,多出部分显示省略号
    使用vue开发自定义tabs标签页组件
  • 原文地址:https://www.cnblogs.com/SivilTaram/p/4848296.html
Copyright © 2011-2022 走看看