第四次软工作业-结对项目
(1)提供你的结对成员的博客链接地址
二班孙帅群: https://home.cnblogs.com/u/sunshuaiqun/
(2)结对成员对四则运算项目进行代码互审,并给出代码审查结果表
二班孙帅群的代码审查表(由四班阚宇航完成)
代码复审核查表
|
|||||||
1.概要部分 |
1.代码能符合需求和规范说明吗?代码不符合需求和规格说明,运行时题目有存到result文档中,但是并没有弹出运行结果。 2.代码设计是否考虑周全?代码满足需求,每个功能都能用类实现,但是考虑不周全,没有考虑用户的非法输入。 3.代码可读性如何?代码缩进规范,代码中标识符命名不足够规范。 4.代码容易维护吗?不容易维护,所有的功能都是在同一个类中完成。 5.代码的每一行都执行并检查过了吗?代码每一行都能执行没有错误。
|
||||||
2.设计规范部分 |
1.设计是否遵循已知的设计模式或项目中常用的模式?代码设计没有用到已知的常用的六种设计模式 2.有没有硬编码字符串或数字等存在?没有硬编码,字符串或数字等存在 3.代码有没有依赖于某平台,是否会影响将来的移植?代码用Java编写,没有依赖某一特定的平台,不影响移植 4.开发者新写的代码能否用已有Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现?代码中用到了Java中的其他包中的现有的类,所以不用全部重新实现。 5.有没有无用的代码可以清除?没有可以清除的无用的代码
|
||||||
3.代码规范部分 |
1.修改的部分符合代码标准和风格嘛?代码风格遵循统一的风格和标准。
|
||||||
4.具体代码部分 |
1.有没有对错误进行处理?对于调用外部函数,是否检查了返回值或处理了异常?无法处理用户输入的错误的参数。没有用到外部函数。 2.参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数?参数传递没有错误,没有字符串。 3.边界条件如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环?没有对参数的大小进行判断,如果用户的输入参数较大或者输入异常可能会出现故障。没有switch语句,正确输入下循环没有可能出现死循环。 4.有没有使用断言(Assert)来保证我们认为不变的条件真的满足?没有使用。 5.对资源的利用,是在哪里申请,在哪里释放的?有没有可能导致资源泄露(内存,文件,各种GUI资源,数据库访问的连接,等等)?有没有可能优化?存在一定的内存泄露,有可能但是没有必要优化。 6.数据结构中有没有用不到的元素?没有,所有被定义了的数据结构都被利用上了。
|
||||||
5.效能 |
1.代码的效能如何?最坏的情况是怎样的?代码的效能很好,能够瞬间完成功能。时间根据用户的输出算式的需求等比增长。 2.代码中特别是循环中是否有明显可优化的部分(C++中反复创建类,c#中string的操作是否能用StringBuilder来优化)?代码中只有一个输出算式的循环没有可明显优化的部分。
|
||||||
6.可读性 |
1.代码可读性如何?有没有足够的注释?代码可读性较差,都在一个类中实现所有的功能,命名也差强人意。但是代码注释数量恰到好处,简单易懂。
|
||||||
7.可测试性 |
1.代码是否需要更新或创建新的单元测试?针对特定领域的开发(如数据库,网页,多线程等),可以整理专门的核查表。代码可以更新创建新的单元测试,但是没有必要。因为代码的功能的单一,能确保要求的功能能正常运行即可。一个只能生成四则运算的单一功能的代码,就算完善了各种运算功能也没有真对特定领域的开发的必要性,单一的功能会是他无法发展的硬性制约。
|
四班阚宇航的代码审查表(由二班孙帅群完成)
代码复审核查表
|
|||||
1.概要部分 |
1.代码能符合需求和规范说明吗?代码语言不符合;未实现第一个功能;生成的算式未能屏显 2.代码设计是否考虑周全?代码未全部满足需求;考虑不周全,没有考虑用户的非法输入。 3.代码可读性如何?代码可读性良好;部分代码未能按规定书写;代码中标识符命名不够规范。 4.代码容易维护吗?容易维护,所有的功能都分散到相应的函数中 5.代码的每一行都执行并检查过了吗?每一行都能执行,没有错误
|
||||
2.设计规范部分 |
1.设计是否遵循已知的设计模式或项目中常用的模式?遵循了已知的设计模式 2.有没有硬编码字符串或数字等存在?未使用硬编码或字符串/数字 3.代码有没有依赖于某平台,是否会影响将来的移植?代码用C编写,移植具有局限性 4.开发者新写的代码能否用已有Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现?项目中使用了已有的功能实现 5.有没有无用的代码可以清除?代码中存在一些冗余的代码,可以清除优化 |
||||
3.代码规范部分 |
1.修改的部分符合代码标准和风格嘛?代码风格遵循统一的风格和标准。 |
||||
4.具体代码部分 |
1.有没有对错误进行处理?对于调用外部函数,是否检查了返回值或处理了异常?无法处理用户输入的错误的参数。没有用到外部函数。 2.参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数?参数传递没有错误,没有字符串。 3.边界条件如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环?没有对参数的大小进行判断,如果用户的输入参数较大或者输入异常可能会出现故障。没有switch语句,正确输入下循环没有可能出现死循环。 4.有没有使用断言(Assert)来保证我们认为不变的条件真的满足?没有使用 5.对资源的利用,是在哪里申请,在哪里释放的?有没有可能导致资源泄露(内存,文件,各种GUI资源,数据库访问的连接,等等)?有没有可能优化?理论上不存在资源泄露;存在一定的优化空间 6.数据结构中有没有用不到的元素?没有
|
||||
5.效能 |
1.代码的效能如何?最坏的情况是怎样的?代码的效能较好,能较快完成功能。完成时间根据用户的输出算式的需求等比增长 2.代码中特别是循环中是否有明显可优化的部分(C++中反复创建类,c#中string的操作是否能用StringBuilder来优化)?存在一处明显可优化的部分
|
||||
6.可读性 |
1.代码可读性如何?有没有足够的注释?代码可读性良好;有足够多的注释
|
||||
7.可测试性 |
1.代码是否需要更新或创建新的单元测试?针对特定领域的开发(如数据库,网页,多线程等),可以整理专门的核查表。代码需要更新,目前操作过于死板,功能比较单一的注释
|
(3)选取其中一个成员的项目为基础,进行结对编程。结对项目撰写的博客要求:
1.结合课堂讲授内容,制订一份2人共同遵守的代码编写基本规范(至少包括注释规范与变量命名规范)。
a.变量的后面注释变量含义
b.类的后面注释类的功能
c.将各个功能分别用不同的类来实现
d.四个空格作为缩进
e.方法之间空一行
f.变量命名用变量的英文来命名利用驼峰命名法适当结合下划线和数字
2.描述结对编程的感受。
a.我的Java功底不是很好,可以和队友进行更好的学习。
b.队友的代码中包括了我没完成的负数带小括号的功能,而他也没完成我代码中是否出现答案的附加功能。取长补短。
c.因为有队友的存在,能促进积极性和责任心,不能因为个人原因拖队友的后腿。
d.当然结对编程更考验了代码的书写规范,因为代码要保证队友看的懂,简单清晰明了,才能保证更好的协作。
e.需要更用心的安排两个人的共同时间,提前安排避免耽误每个人的个人时间,这也是很重要的。
3.结对场景照片(在线实时结对编程)
(4)结对项目编程要求:
对结对项目首先完成代码规范和设计规范的修改,其次完成项目增加的需求,最后将完成的项目提交到github上,给出github的连接地址,可以给出简单的设计说明。
增加的需求:
(a)考虑数据异常处理问题,如在输入题目生成范围的数据时,输入了“abc“等字符数据,程序如何处理。
(b)增大算式生成数的范围(如整数存不下的数),程序如何处理。
github的链接地址:https://github.com/keep-wall/Hello-world/commit/c17c6f3705a69b9de42b6c931e9e1ed616e97074