第四次博客作业-结对项目
一、任务1
结对的成员对:192401宝乐----192401庄浩玉玺
二、任务2
2.1结对成员的博客链接地址
https://www.cnblogs.com/yuxi111/p/11724214.html
2.2结对成员对四则运算项目代码互审与代码审查结果表
1、宝乐代码审查结果表
宝乐代码审查结果表 | ||
概要部分 | (1)代码是否符合需求和规格? | 符合,所列需求全部实现 |
(2)代码设计是否考虑周全? | 部分周全,如没有对异常进行处理 | |
(3)代码可读性如何? | 简洁易懂,不存在二义性 | |
(4)代码容易维护么? | 后期维护较困难 | |
(5)代码的每一行都执行并检查过了吗? | 全部检查完毕 | |
设计规范部分 | (1)设计是否遵从已知的设计模式或项目中常用的模式? | 遵循 |
(2)有没有硬编码或字符串/数字等存在? | 不存在 | |
(3)代码有没有依赖于某一平台,是否会影响将来的移植? | 没有出现此情况 | |
(4)开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? | 没有使用去检验功能是否能实现;因代码没有进行封装,所以不可调用实现 | |
(5)有没有无用的代码可以清除? | 没有出现无用代码 | |
代码规范部分 | 修改的部分符合代码标准和风格么? | 变量、方法命名规则是驼峰命名法。编程风格采用的是Kernighan风格 |
具体代码部分 | (1)有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 有对错误进行处理的功能;对外部函数没有检查返回值或处理了异常 |
(2)参数传递有无错误,字符串的长度的字节的长度还是字符的长度,是以0开始计数还是还是以1开始计数? | 默认以0开始计数 | |
(3)边界条件是如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环? | 该程序的分支运用的是if-elss实现的;循环没有出现死循环 | |
(4)有没有使用断言(Assert)来保证我i们认为不变的条件真的得到满足? | 没有实现断言 | |
(5)对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄漏(内存,文件,各种GUI资源,数据库访问的连接,等等)?有没有优化的空间? | 可能存在资源泄露,并没有优化空间 | |
(6)数据结构中有没有用到的元素? | 进行重复检验运用到栈 | |
效能 | (1)代码的效能如何?最坏的情况是怎样? | 效能不错,时间复杂度 T=O(n)),最坏情况也是O(n) |
(2)代码中,特别是循环中是否有明显可优化的部分? | 没有明显的优化部分 | |
(3)对于系统和网络的调用是否会超时?如何处理? | 没有出现超时 | |
可读性 | 代码可读性如何?有没有足够的注释? | 简洁易懂,注释合格 |
可测试性 | 代码是否需要更新或创建新的单元测试? | 需要 |
2、庄浩玉玺代码审查结果表
庄浩玉玺代码审查结果表 | ||
概要部分 | (1)代码是否符合需求和规格? | 符合,所列需求全部实现 |
(2)代码设计是否考虑周全? | 部分周全,如没有对异常进行处理 | |
(3)代码可读性如何? | 简洁易懂,不存在二义性 | |
(4)代码容易维护么? | 后期维护较困难 | |
(5)代码的每一行都执行并检查过了吗? | 全部检查完毕 | |
设计规范部分 | (1)设计是否遵从已知的设计模式或项目中常用的模式? | 遵循 |
(2)有没有硬编码或字符串/数字等存在? | 不存在 | |
(3)代码有没有依赖于某一平台,是否会影响将来的移植? | 没有出现此情况 | |
(4)开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? | 没有使用去检验功能是否能实现;因代码没有进行封装,所以不可调用实现 | |
(5)有没有无用的代码可以清除? | 没有出现无用代码 | |
代码规范部分 | 修改的部分符合代码标准和风格么? | 变量、方法命名规则是驼峰命名法。编程风格采用的是Kernighan风格 |
具体代码部分 | (1)有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 有对错误进行处理的功能;对外部函数没有检查返回值或处理了异常 |
(2)参数传递有无错误,字符串的长度的字节的长度还是字符的长度,是以0开始计数还是还是以1开始计数? | 默认以0开始计数 | |
(3)边界条件是如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环? | 该程序的分支运用的是if-elss实现的;循环没有出现死循环 | |
(4)有没有使用断言(Assert)来保证我i们认为不变的条件真的得到满足? | 没有实现断言 | |
(5)对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄漏(内存,文件,各种GUI资源,数据库访问的连接,等等)?有没有优化的空间? | 可能存在资源泄露,并没有优化空间 | |
(6)数据结构中有没有用到的元素? | 进行重复检验运用到栈 | |
效能 | (1)代码的效能如何?最坏的情况是怎样? | 效能不错,时间复杂度 T=O(n)),最坏情况也是O(n) |
(2)代码中,特别是循环中是否有明显可优化的部分? | 没有明显的优化部分 | |
(3)对于系统和网络的调用是否会超时?如何处理? | 没有出现超时 | |
可读性 | 代码可读性如何?有没有足够的注释? | 简洁易懂,注释合格 |
可测试性 | 代码是否需要更新或创建新的单元测试? | 需要 |
2.3选取其中一个成员的项目为基础,进行结对编程。结对项目撰写的博客要求
2.3.1结合课堂讲授内容,制订一份2人共同遵守的代码编写基本规范(至少包括注释规范与变量命名规范)
1.类名采用大驼峰的命名形式,所谓大驼峰就是首字母大写,例如UpperCameCase。而出现抽象类命名使用 Abstract 或 Base 开头;异常类使用 Exception 结尾;测试类命名以测试的类名开始,以 Test 结尾。
2.包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。一般单词使用单数形式,类名如果有复数含义的话,则可以使用复数形式。
3.全局常量和类内常量的命名采用字母全部大写,单词之间加下画线的方式。(所谓全局常量指的是类的公开静态属性,使用 public static final 修饰;类内常量指的是私有静态属性,使用 private static final 修饰)
4.局部常量则采用小驼峰的形式。(所谓局部常量指的是方法内的常量)
5.可变变量常用小驼峰的命名形式,如 myName 。
6.空格方面
-
- 二目、三目运算符的左右两边都应该加一个空格。
- 注释的双斜线与注释内容之间有且仅有一个空格。
- 方法参数在定义和传入参数时,多个参数逗号后边都应该加空格。
- 如果大括号为空,则简洁地写成{}即可,大括号中间无须换行和加空格。
- 左右小括号与括号内部的相邻字符之间不要出现空格。
- 左大括号前需要加空格。
7.缩进使用一个缩进的距离等于四个空格的距离。
8.控制语句
-
- 在 if, for, while, do-while 等语句中必须使用大括号,即使只有一行代码,也加上大括号。
- 在条件表达式中不允许出现赋值操作,也不允许在判断表达式中出现复杂的所及组合。
- 多层嵌套不能超过三层。
9.注释
-
- 注释需要写的简明易懂。特别是方法的参数,以及返回值。
- 每一次修改时,相应的注释也应进行同步更新。
- 在类,接口,方法中,使用/** */javadoc注释。方法代码中如果有顺序之分,最好将代码也加上序号,如1,2,3等。
2.3.2描述结对编程的感受
-
- 在编程过程中可以互相帮助,互相教对方,得到了能力上的互补。
- 可以让编程环境有效地贯彻到设计。
- 编码过程中及时发现问题,增强代码和产品质量,并有效的减少BUG。
- 在编程中,相互讨论,可能更快更有效地解决问题。
- 但是有时候,我们也会对一个问题各执己见(比如命名问题,实现方法等),争吵不休,反而浪费不少时间。
2.3.3结对场景照片
2.4结对项目编程要求
2.4.1GitHub链接
https://github.com/BabyHappy1/jisuan
2.4.2增加的需求
1.考虑数据异常处理问题,如在输入题目生成范围的数据时,输入了“abc“等字符数据,程序如何处理。
2.增大算式生成数的范围(如整数存不下的数),程序如何处理。