任务1:
在学习通上已经完成,截图如下所示:
任务2:
结对的成员共同完成本次作业,撰写博客并将结对项目的程序发布到github上
博客的内容安排如下:
(1)结对成员的博客链接地址
我的结对成员的博客园地址:
https://www.cnblogs.com/lql1997/p/11734183.html?tdsourcetag=s_pctim_aiomsg
(2)结对成员对四则运算项目进行代码互审,并给出代码审查结果表
李奇伦的代码审查表(由严兴旺完成)
规范要求 |
是否符合要求 |
|
1.概要部分 | (1)代码符合规格需求和说明么? | 符合 |
(2)代码设计考虑是否周全? | 是 | |
(3)代码可读性如何? | 良好 | |
(4)代码容易维护么? | 容易 | |
(5)代码的每一行都执行并检查过了么? | 是 | |
2.设计规范部分 | (1)设计是否遵从已知的设计模式或项目中的常用模式? | 是 |
(2)有没有硬编码或字符串/数字等存在? | 没有 | |
(3)代码有没有依赖于某一平台,是否会影响将来的移植? | 没有 | |
(4)有没有无用的代码可以清楚? | 有 | |
3.代码规范部分 | 修改的部分符合代码标准和风格吗? | 符合 |
4.具体代码部分 | (1)有没有对错误进行处理?对于调用的外部函数是否检查了返回值或处理了异常? | 有 |
(2)参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是以0开始计数还是1开始计数? | 有 | |
(3)边界条件是如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环? | 边界条件及分支通过多组测试用例测试,没有 | |
(4)有没有使用断言来保证我们认为不变的条件真的得到满足? | 没有 | |
(5)有没有优化的空间? | 有 | |
(6)数据结构中有没有用不到的元素? | 没有 | |
5.效能 | (1)代码的效能如何?最坏的情况是怎样的? | 代码覆盖率最高可达80%以上,最坏情况无算式结果输出 |
(2)代码中,特别是循环中是否有明显可优化的部分? | 有 | |
6.可读性 | 代码可读性如何?有没有足够的注释? | 较好,有足够注释 |
严兴旺的代码审查表(由李奇伦完成)
规范要求 |
是否符合要求 |
|
1.概要部分 | (1)代码符合规格需求和说明么? | 符合 |
(2)代码设计考虑是否周全? | 是 | |
(3)代码可读性如何? | 良好 | |
(4)代码容易维护么? | 不易 | |
(5)代码的每一行都执行并检查过了么? | 是 | |
2.设计规范部分 | (1)设计是否遵从已知的设计模式或项目中的常用模式? | 是 |
(2)有没有硬编码或字符串/数字等存在? | 没有 | |
(3)代码有没有依赖于某一平台,是否会影响将来的移植? | 没有 | |
(4)有没有无用的代码可以清楚? | 有 | |
3.代码规范部分 | 修改的部分符合代码标准和风格吗? | 符合 |
4.具体代码部分 | (1)有没有对错误进行处理?对于调用的外部函数是否检查了返回值或处理了异常? | 没有 |
(2)参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是以0开始计数还是1开始计数? | 有 | |
(3)边界条件是如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环? | 边界条件及分支通过多组测试用例测试, 没有 | |
(4)有没有使用断言来保证我们认为不变的条件真的得到满足? | 没有 | |
(5)有没有优化的空间? | 有 | |
(6)数据结构中有没有用不到的元素? | 没有 | |
5.效能 | (1)代码的效能如何?最坏的情况是怎样的? | 代码覆盖率最高可达65%以上,最坏情况输出算式相同 |
(2)代码中,特别是循环中是否有明显可优化的部分? | 有 | |
6.可读性 | 代码可读性如何?有没有足够的注释? | 一般,注释不多 |
(3)选取其中一个成员的项目为基础,进行结对编程。结对项目撰写的博客要求:
(a)代码改进
1.在变量定义方面做的比较好,能百分百的做到见名知意
2.设计了几个功能单一且完善的函数,完成了函数的独立性
3.能较好的遵守代码规范,代码读起来简单易懂
4.代码的覆盖率较高
(b)描述结对编程的感受
本周出于老师作业的要求,本周体验了一下结对编程,刚开始还觉得这没什么稀奇,一样都是编程嘛,体验了之后才知道结对编程的优点。
结对编程,从字面上讲,就是两个人一起编程。而1+1=?这个问题一直是一个疑问,可以大于2,可以等于2,可以小于2,从这次编程经历看来,结对编程(至少是我们这次结对编程),这个式子的答案应该是大于2.
关于结对编程的许多优点和好处,在邹欣老师的博客中http://www.cnblogs.com/xinz/archive/2011/08/07/2130332.html都可以看到,我也就不多说,我主要分享一下我对这次结对编程经历的感想。在结对编程中,一个程序员负责写代码,另一个负责检查代码错误,查阅必要资料等。这样的编程看似只有一个人写代码,效率不如两个人都写代码效率高,但事实是程序员往往会画更多时间去调bug。
编程过程中虽然遇到了很多问题,但我们最终将题目完成了,觉得还是蛮有成就感的。开始编程前,我们先讨论了题目的思路,才开始的编程。讨论确定使用面向对象的java语言。在确定类的时候我们俩出现了分歧,他认为只需要设计题目这个类,然后需要多少个题就构造多少个这样的对象。而我认为需要设计题目、题集两个类,题集里设置题目数组和题目数量两个成员。于是我就在那纠结纠结,到底怎么设置类,怎么设置类,纠结啊,或许大家的想法都有道理,但是究竟哪个好些。分析了半天,决定还是设置两个类。我敲代码,由比较细心小伙伴在旁边为我”指路“。写代码的过程中出了几个小问题,小伙伴一眼看到就给我指出来了,平时这种问题真是出的不少,如果是我一个人,待会儿估计又不知道哪里出错,又要调试半天。
结对编程的过程收获颇多,我觉得结对编程有好有坏,但是好处远远大于的不好的地方。两个人难免会遇到意见不同的时候,关键是看此时如何协调、如何沟通、如何采纳。如果团队内部不能很好地处理这些分歧,那么非但不能提高效率,反而会拖慢工作的进程。如果团队协调得很好,那么两个人的力量是绝对大过一个人的。一个人的想法始终有限,两个人或者一群人合作,说不定还能擦出思想的火花。以前都喜欢一个人闷头闷脑的敲代码,就觉得两个人想法太多太麻烦,现在看来,合作更加有效率呢。
结对编程还能减轻彼此的负担,一个人写完完整的代码,往往会很累,最后bug频出,但是结对编程中,在适当时候两个人可以互换角色,这样写代码的任务就被分给了两个人,也减少了bug率,这次编程我感觉bug出现得比平时少很多,基本功能的编写时间也少了很多。
总之,结对编程减少了程序bug出现的频率,还减少了一个人写程序的负担,更有助于彼此的互相学习,大家不妨一试。
(c)结对场景照片
(4)结对项目编程要求:(40分)
lilbetter小组的github网站:
https://github.com/lilbetter-l/work