代码复审
看到小伙伴的代码,我表示深深的佩服。感觉自己离别人的差距怎么就这么大,心里还真的很羡慕。按照要求,对小伙伴的代码审查结果如下:
Code Review Checklist |
|
General |
|
· Does the code work? Does it perform its intended function, the logic is correct etc. |
· 代码大多数情况能够正常运行,但是中间有一次出现了乱码(烫烫烫烫烫),由于有随机数,所以没能再次找到这个bug,除此之外,计算上有问题,发现有些式子的计算结果不对 |
· Is all the code easily understood? |
· 代码结构十分清晰,这点让我十分佩服。因此,我打算根据小伙伴的代码结构,修改自己的程序 |
· 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. |
· 小伙伴的编码习惯很不错,有注释,变量名也容易懂,阅读代码的时候十分容易 |
· Is there any redundant or duplicate code? |
· 没有冗余,很多情况还简化了代码,比如运算的时候,使用/=符号,少写了不少变量 |
· Is the code as modular as possible? |
· 代码结构很好,模块化明显,有主函数处理输入输出,有fraction类处理计算,有express类处理式子的相关结果 |
· Can any global variables be replaced? |
· 全局变量不多,就几个,没必要替换,各自实现自己的功能 |
· Is there any commented out code? |
· 没有,也许是小伙伴在写完程序之后就将多余的代码直接删除了 |
· Do loops have a set length and correct termination conditions? |
· 循环都有终止条件,这些条件都是可控的,而且在测试过程中没有发现有无限循环的情况 |
· Can any of the code be replaced with library functions? |
· 有一个求最大公约数的函数可以替换,但是也是别人写好的库,并不是C++自带的库 |
· Can any logging or debugging code be removed? |
· 没有发现调试用代码,估计是小伙伴在提交前就已经删除了吧 |
Security |
|
· Are all data inputs checked (for the correct type, length, format, and range) and encoded? |
· 输入的格式没有限制,调用了C的库函数atoi(),但是当输入参数是一个非数字字符时就会返回0,这样得到的结果就是不正确的 |
· Where third-party utilities are used, are returning errors being caught? |
· 未使用第三方工具;没有返回异常值,返回值都是0,不管格式正确与否,但是小伙伴打印输出了相应的字符串说明相关异常 |
· Are output values checked and encoded? |
· 输出的表达式进行了除数是否为0和减法是否为负数的审查 |
· Are invalid parameter values handled? |
· 未处理 |
Documentation |
|
· Do comments exist and describe the intent of the code? | ·基本上在我觉得需要说明的地方都出现了注释,有少部分需要联系其他代码才能看明白的代码没有comment |
· Are all functions commented? | · 不是每一个函数都有注释,而且注释并没有说明函数的功能,这点我觉得需要改进一下 |
· Is any unusual behavior or edge-case handling described? |
· 没有描述 |
· Is the use and function of third-party libraries documented? | · 使用的第三方接口(函数)都是C库中有的,因此未进行说明。 |
· Are data structures and units of measurement explained? | · 有作解释,但是解释并不多,只是简单的说明了一下 |
· 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. | · 整个程序是容易测试的 |
· 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? | · 不可 |
看了小伙伴的代码,发现有不少可以改进的地方,但是更多的是值得自己学习的地方。我们都是用C++实现的,但是她的代码看着很舒服,自己的代码却是连回头看的想法都没有,这一点,感觉自己特别失败。希望在以后的学习中,慢慢改进自己不好的代码风格,学习好的代码结构,向小伙伴学习。