结对项目-java生成四则运算
一、博客链接
结对成员博客链接:192401班陈传诚
https://www.cnblogs.com/meethigher/
二、GitHub链接
RandomFormula:https://github.com/matrixjd/RandomFormula2
三、代码复审
192401班陈传诚的代码复审表
代码复核审查表 | ||
---|---|---|
概要部分 | 代码符合需求和规格说明么? | 符合 |
代码设计是否考虑周全? | 是 | |
代码可读性如何? | 通俗易懂,直白如话 | |
代码容易维护么? | 不太容易 | |
代码的每一行都执行并检查过了吗? | 是,编译0错误,0警告 | |
设计规范部分 | 设计是否遵从已知的设计模式或项目中常用的模式? | 没有,单类实现的功能 |
有没有硬编码或字符串/数字等存在? | 没有,数值都是通过变量或者方法获取的 | |
代码有没有依赖于某一平台,是否会影响将来的移植? | 只要有java环境,处处运行 | |
开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? | 有。是 | |
有没有无用的代码可以清除? | 没有,已经精简过了 | |
代码规范部分 | 修改的部分符合代码标准和风格吗? | 变量、方法命名规则是驼峰命名法。编程风格采用的是Kernighan风格 |
具体代码部分 | 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 有。是 |
参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是以0开始计数还是以1开始计数? | 没有错误。字符串的长度是字符的长度,以0开始计数 | |
边界条件是如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环? | 边界条件,比方说栈底,为防止栈底为空,报错,在栈底存储了一个#。 | |
有没有使用断言(Assert)来保证我们认为不变的条件真的得到满足? | 暂时没有 | |
对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄漏?有没有优化的空间? | ooxxooxx | |
数据结构中有没有用不到的元素? | 有,栈底中存储的# | |
效能 | 代码效能如何?最坏的情况是怎样的? | 最坏的时间复杂度T=O(n) |
代码中,特别是循环中是否有明显可优化的部分 | 没有 | |
对于系统和网络的调用是否会超时?如何处理? | 不会,没用到系统或者网络的调用 | |
可读性 | 代码可读性如何?有没有足够的注释? | 通俗易懂直白如话。注释比代码多 |
可测试性 | 代码是否需要更新或者创建新的单元测试? | 不需要 |
192401班申佳栋的代码复审表
代码复核审查表 | ||
---|---|---|
概要部分 | 代码符合需求和规格说明么? | 符合 |
代码设计是否考虑周全? | 是 | |
代码可读性如何? | 可读性好 | |
代码容易维护么? | 容易 | |
代码的每一行都执行并检查过了吗? | 是,编译0错误,0警告 | |
设计规范部分 | 设计是否遵从已知的设计模式或项目中常用的模式? | 没有 |
有没有硬编码或字符串/数字等存在? | 没有,数值都是通过变量或者方法获取的 | |
代码有没有依赖于某一平台,是否会影响将来的移植? | 只要有java环境,处处运行 | |
开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? | 有。是 | |
有没有无用的代码可以清除? | 没有 | |
代码规范部分 | 修改的部分符合代码标准和风格吗? | 变量、方法命名规则是驼峰命名法。编程风格采用的是Kernighan风格 |
具体代码部分 | 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 有。是 |
参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是以0开始计数还是以1开始计数? | 没有错误。字符串的长度是字符的长度,以0开始计数 | |
边界条件是如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环? | 没有死循环 | |
有没有使用断言(Assert)来保证我们认为不变的条件真的得到满足? | 暂时没有 | |
对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄漏?有没有优化的空间? | ooxxooxx | |
数据结构中有没有用不到的元素? | 没有 | |
效能 | 代码效能如何?最坏的情况是怎样的? | 最坏的时间复杂度T=O(n) |
代码中,特别是循环中是否有明显可优化的部分 | 没有 | |
对于系统和网络的调用是否会超时?如何处理? | 不会,没用到系统或者网络的调用 | |
可读性 | 代码可读性如何?有没有足够的注释? | 可读性好,有 |
可测试性 | 代码是否需要更新或者创建新的单元测试? | 不需要 |
四、结对编程
1. 代码编写基本规范
- 代码中的命名均不能以特殊字符(如下划线、$#符号)开始或结束 。
- 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
- 类名使用UpperCamelCase风格,必须遵从驼峰形式。
- 方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格,必须遵从驼峰形式。
- 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
- 抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以它要测试的类的名称开始,以Test结尾。
2. 结对编程的感受
- 一个人编写代码,总是有种灯下黑的现象。可能你自己犯的很微小的错误,你花了大把大把的时间,还是搞不出来。而另一个人只需要看一下就能指出,这提高了复审效率。
- 可以不断从别人那里学习,提高自己的水平。这次结对编程,我们互相学到了很多,比如良好的代码风格,清晰的编码思路,以及熟练的调试技巧等
- 通过两个人的讨论,更好的解决问题等。
3. 结对场景照片
五、实现新增需求
增加的需求:
- 考虑数据异常处理问题,如在输入题目生成范围的数据时,输入了“abc“等字符数据,程序如何处理。
- 增大算式生成数的范围(如整数存不下的数),程序如何处理。
对于1,2两个需求,如果不满足输入的条件,捕获异常之后,重新进行输入。