同伴个人代码复审结果
2015-09-29 23:20
183 查看
[b]同伴个人代码复审结果[/b]
一、一般性检查
1、代码能够正常运行,基本可以实现预定功能,没有大的逻辑错误。
2、代码结构非常清晰,模块化做得很好,很好地运用了面向对象的编程思想,容易阅读和理解。
3、关于字符串的匹配可以用库函数中的正则表达式来进行,当然可能在字符串比较长的时候,正则表达式会栈溢出,或者效率很低。
4、没有出现多余的调试代码。
5、代码的风格比较规范,缩进、换行、变量命名都遵守一般性的约定。
二、安全性检查
1、对输入的数据格式不合法的情况下,有些时候不能正确地识别。
2、当出现命令行参数不匹配的时候,抛出了异常,避免程序崩溃。
三、文档和注释
1、没有帮助文档,但是有简要的注释。
2、通过与程序作者交流,可以得知每一段代码的功能。
四、测试
1、有代码测试模块。
2、测试用例偏少,不能覆盖很多极端情况,代码的覆盖率不高。
五、发现的已知bug
1、
这一段中判断条件有误,应该改为(a < b || a == b)
2、不能生成形如(1 + 2) * (3 + 4)= 这样的式子,该问题并非是编码的错误,而是在算法设计的层面上主动规避了这样一种情况。作者的意图是先生成一个算式的后缀表达式,然后将其转换为中缀表达式,作者用了一个变量t来记录当前的优先级,一旦优先级达到了二级优先级,作者就不再生成+和-符号,因此有些合法的情况作者不能生成。所以,可能极端的情况就是由于舍弃了某些情况,不能完整地根据参数生成足够的不重复的算式。
3、作者为了避免被0除的情况,限制所有的数为正数,而题目要求允许生成0。
六、可做的优化
这一段代码中 IntNum.gcd(a.down,b.down) 作为一个函数的返回结果,在三次计算中值完全相同,因此可以用一个临时变量进行存储,避免三次调用函数,如果该段代码被反复执行,那么优化后的效率会大大提高。
七、总结
本程序作者的代码风格和代码逻辑十分规范,编程思路也很清晰,体现出较高的编程水平,值得笔者学习。
一、一般性检查
1、代码能够正常运行,基本可以实现预定功能,没有大的逻辑错误。
2、代码结构非常清晰,模块化做得很好,很好地运用了面向对象的编程思想,容易阅读和理解。
3、关于字符串的匹配可以用库函数中的正则表达式来进行,当然可能在字符串比较长的时候,正则表达式会栈溢出,或者效率很低。
4、没有出现多余的调试代码。
5、代码的风格比较规范,缩进、换行、变量命名都遵守一般性的约定。
二、安全性检查
1、对输入的数据格式不合法的情况下,有些时候不能正确地识别。
2、当出现命令行参数不匹配的时候,抛出了异常,避免程序崩溃。
三、文档和注释
1、没有帮助文档,但是有简要的注释。
2、通过与程序作者交流,可以得知每一段代码的功能。
四、测试
1、有代码测试模块。
2、测试用例偏少,不能覆盖很多极端情况,代码的覆盖率不高。
五、发现的已知bug
1、
public static bool operator >(Number a, Number b) { if (a < b) return false; else return true; }
这一段中判断条件有误,应该改为(a < b || a == b)
2、不能生成形如(1 + 2) * (3 + 4)= 这样的式子,该问题并非是编码的错误,而是在算法设计的层面上主动规避了这样一种情况。作者的意图是先生成一个算式的后缀表达式,然后将其转换为中缀表达式,作者用了一个变量t来记录当前的优先级,一旦优先级达到了二级优先级,作者就不再生成+和-符号,因此有些合法的情况作者不能生成。所以,可能极端的情况就是由于舍弃了某些情况,不能完整地根据参数生成足够的不重复的算式。
3、作者为了避免被0除的情况,限制所有的数为正数,而题目要求允许生成0。
六、可做的优化
Number result = new Number(); int tdown = a.down * b.down / IntNum.gcd(a.down,b.down); int t1 = b.down / IntNum.gcd(a.down, b.down); int t2 = a.down / IntNum.gcd(a.down, b.down);
这一段代码中 IntNum.gcd(a.down,b.down) 作为一个函数的返回结果,在三次计算中值完全相同,因此可以用一个临时变量进行存储,避免三次调用函数,如果该段代码被反复执行,那么优化后的效率会大大提高。
七、总结
本程序作者的代码风格和代码逻辑十分规范,编程思路也很清晰,体现出较高的编程水平,值得笔者学习。
相关文章推荐
- UNIX环境高级编程——第四章
- go struct结构的实例
- 如何编写让别人能读懂的代码?
- 学习笔记 - java递归遍历文件夹
- Java String对象的经典问题(转)
- php preg_match()与preg_match_all()函数
- 《Python基础教程(第2版 修订版)》 第1章 快速改造:基础知识(学习笔记)
- eclipse连接sql server 图文教程
- C语言实现时间差、星期、天数算日期(转)
- #个人博客作业week2——结对编程伙伴代码复审
- 基于用户协同过滤python源码【多线程计算RMSE值】
- 微软笔试编程题 求多少个子序列符合斐波那契排列
- 【cl】eclipse基本设置(字体、配置JDK)
- C# 5.0新推出的async和await
- 自定义实现ContentProvider数据共享
- Java
- java 多线程
- VS2015常用快捷键
- Java
- Windows 成功地加载了这个硬件的设备驱动程序,但找不到硬件设备。 (代码 41)