第四次软件工程项目---结对编程
一、提供你的结对成员的博客链接地址(5分)
https://www.cnblogs.com/zcy-/p/11714440.html
二、代码互审
丛慧的代码审查表(由张晨钰完成)
Y代表是,N代表否
(1)概要部分
代码符合需求和规格说明吗? | Y |
代码设计是否考虑周全? | N |
代码可读性如何? | N |
代码容易维护吗? | Y |
代码的每一行都执行并检查过吗? | Y |
(2)设计规范部分
设计是否遵从从已知的设计模式或项目中的常用模式? | Y |
有没有硬编码或字符串、数字的存在? | N |
代码有没有依赖某一平台,是否会影响将来移植? | N |
开发者新写的代码能否用已拥有的Library/SDK/Framework中的功能实现? | N |
有没有无用的代码可以清除? | N |
(3)代码规范部分
修改的部分符合代码标准和风格吗? | Y |
注释是否清晰且有必要? | N |
函数是否已经有文档注释? | Y |
每行是否只声明一个变量? | N |
代码行长度是否在要求内? | N |
(4)具体代码部分
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | N |
参数传递有无错误,字符串长度是字节长度还是字符长度? | N,字符 |
边界条件如何处理?switch语句的default分支如何处理?循环有没有可能出现死循环? | N |
有没有使用断言来保证我们认为不变的条件真的得到满足? | N |
对资源的利用是在哪里申请?在哪里释放?有无可能存在资源泄露?有无优化空间? | N |
数据结构中有没有用不到的元素? | N |
(5)效能
代码中的效能如何? | Y |
代码中,特别是循环中是否有明显可优化的部分? | Y |
对于系统和网络的调用是否超时?如何处理? | N |
(6)代码可读性
代码可读性如何?有没有足够的解释? | Y |
缩进层数是否不超过规定? | N |
代码行内空格是否得体? | N |
(7)可测试性
代码是否需要更新或创建新的单元测试? |
N |
张晨钰的代码审查表(由丛慧完成)
(1)概要部分
代码符合需求和规格说明吗? | Y |
代码设计是否考虑周全? | Y |
代码可读性如何? | Y |
代码容易维护吗? | Y |
代码的每一行都执行并检查过吗? | Y |
(2)设计规范部分
设计是否遵从从已知的设计模式或项目中的常用模式? | Y |
有没有硬编码或字符串、数字的存在? | N |
代码有没有依赖某一平台,是否会影响将来移植? | N |
开发者新写的代码能否用已拥有的Library/SDK/Framework中的功能实现? | N |
有没有无用的代码可以清除? | N |
(3)代码规范部分
修改的部分符合代码标准和风格吗? | Y |
注释是否清晰且有必要? | N |
函数是否已经有文档注释? | Y |
每行是否只声明一个变量? | N |
代码行长度是否在要求内? | N |
(4)具体代码部分
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | Y |
参数传递有无错误,字符串长度是字节长度还是字符长度? | N,字符 |
边界条件如何处理?switch语句的default分支如何处理?循环有没有可能出现死循环? | N |
有没有使用断言来保证我们认为不变的条件真的得到满足? | Y |
对资源的利用是在哪里申请?在哪里释放?有无可能存在资源泄露?有无优化空间? | Y |
数据结构中有没有用不到的元素? | N |
(5)效能
代码中的效能如何? | Y |
代码中,特别是循环中是否有明显可优化的部分? | Y |
对于系统和网络的调用是否超时?如何处理? | N |
(6)代码可读性
代码可读性如何?有没有足够的解释? | Y |
缩进层数是否不超过规定? | N |
代码行内空格是否得体? | N |
(7)可测试性
代码是否需要更新或创建新的单元测试? |
N |
三、选取其中一个成员的项目为基础,进行结对编程。结对项目撰写的博客要求:
(a)结合课堂讲授内容,制订一份2人共同遵守的代码编写基本规范(至少包括注释规范与变量命名规范)。
根据代码互审结果最终选择张晨钰的项目为基础
代码编写基本规范:
(1)关键字public,protected,private不要缩进,声明的函数和变量缩进一个制表符
(2)类声明前应该加上注释,注明该类的作用
(3)类中成员必须进行初始化,可以通过构造函数的初始化列表初始化成员的函数。
(4)在每个类声明之后,每个函数定义结束之后都要加一个空行。
(5)一行代码只做一个事情,这样代码易于阅读。
(6)代码的最大长度宜控制在70-80个字节。
(7)标识符应当直观且可以拼读,做到见名知意。
(8)字符串不应该重复,如果多次用到同一字符串,建议将该字符串定义为字符串常量,再引用。
(9)为不容易理解类变量注释。注释代码段,注释逻辑选择。
(b)描述结对编程的感受。
通过此次结对编程,我体会到了合作者之间的默契的重要性,而且知识储备也是很重要的,我对Java的学习有所欠缺 所以日后还需多加努力,弥补自己的不足之处,
在下一次的合作中能有更出色的成绩。
(c)结对场景照片
(4)结对项目编程要求:(40分)
对结对项目首先完成代码规范和设计规范的修改,其次完成项目增加的需求,最后将完成的项目提交到github上,给出github的连接地址,可以给出简单的设计说明。
增加的需求:(a)考虑数据异常处理问题,如在输入题目生成范围的数据时,输入了“abc“等字符数据,程序如何处理。
(b)增大算式生成数的范围(如整数存不下的数),程序如何处理。
上传到github上的网址:https://github.com/Zcy-1-20/package/tree/master/zcy
设计说明:
将程序模块化,保证每个模块对其他所有模块抖音比自己的设计决策,让模块规定并设计成为在模块中包含的信息不被需要这些信息的其他模块访问。所有访问都通过访问函数实现。