第四次博客作业-结对项目
任务一:结对成员:192404班董美地—192404班徐淑娜
任务2:结对的成员共同完成本次作业,撰写博客并将结对项目的程序发布到github上
博客的内容安排如下:
(1)提供你的结对成员的博客链接地址
①徐淑娜的博客链接地址:https://www.cnblogs.com/smilena/
②董美地的博客链接地址:https://www.cnblogs.com/dongdi/
(2)结对成员对四则运算项目进行代码互审,并给出代码审查结果表
①徐淑娜的代码审查表(由董美地完成)
序 号 | 内容 | 完 成 度 | 其 它 |
概要部分 | 符 合 | ||
1 | 代码符合需求和规格说明吗? | 是 | |
2 | 代码设计是否考虑周全? | 好 | |
3 | 代码可读性如何? | 易 于 | |
4 | 代码易于维护吗? | 是 | |
5 | 代码的每一行都执行并检查过了吗? | ||
设计规范部分 | |||
1 | 设计是否遵从已知的设计模式或设计中常用的模式? | 否 | |
2 | 有没有硬编码或字符串/数字等存在? | 有 | |
3 | 代码有没有依赖于某一平台,是否会影响将来的移植? | 否 | |
4 |
开发者新写的代码能否用已有的 Library/SDK/Framework 中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? |
否 | |
5 | 有没有无用的代码可以清除?(很多人想保留尽可能多的代码,因为以后可能会用上,这样导致程序文件中有很多注释掉的代码,这些代码都可以删除,因为源代码控制已经保存了原来的老代码。) | 有 | |
6 |
代码规范部分 |
符 合 | |
具体代码部分 | |||
1 | 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 有 ; 已检查 | |
2 | 参数传递有无错误? | 无 | |
3 | 边界条件是如何处理的?switch 语句的default 分支是如何处理的?循环有没有可能出现死循环? | ||
4 | 有没有使用断言(Assert)来保证我们认为不变的条件真的得到满足? | 没 有 | |
5 | 有无可能存在资源泄漏(内存、文件、各种GUI 资源、数据库访问的连接,等等)?有没有优化的空间? |
可能;有 |
|
6 | 数据结构中有没有用不到的元素? | 有 | |
效能 | |||
1 | 代码的效能(Performance)如何? | 较 好 | |
2 | 代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类、C#中 string的操作是否能用 StringBuilder 来优化)? | 是 | |
3 | 对于系统和网络的调用是否会超时?如何处理? | 否 | |
可读性 | |||
1 | 代码可读性如何?有没有足够的注释? |
良 好 存 在 |
|
可测试性 | |||
1 | 代码是否需要更新或创建新的单元测试? | 是 |
②董美地代码审查表(由徐淑娜完成)
序 号 | 内容 | 完 成 度 | 其 它 |
概要部分 | 符 合 | ||
1 | 代码符合需求和规格说明吗? | 是 | |
2 | 代码设计是否考虑周全? | 较 好 | |
3 | 代码可读性如何? | 易 于 | |
4 | 代码易于维护吗? | 是 | |
5 | 代码的每一行都执行并检查过了吗? | ||
设计规范部分 | |||
1 | 设计是否遵从已知的设计模式或设计中常用的模式? | 否 | |
2 | 有没有硬编码或字符串/数字等存在? | 有 | |
3 | 代码有没有依赖于某一平台,是否会影响将来的移植? | 否 | |
4 |
开发者新写的代码能否用已有的 Library/SDK/Framework 中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? |
否 | |
5 | 有没有无用的代码可以清除?(很多人想保留尽可能多的代码,因为以后可能会用上,这样导致程序文件中有很多注释掉的代码,这些代码都可以删除,因为源代码控制已经保存了原来的老代码。) | 有 | |
6 |
代码规范部分 |
符 合 | |
具体代码部分 | |||
1 | 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 有 ; 已检查 | |
2 | 参数传递有无错误? | 无 | |
3 | 边界条件是如何处理的?switch 语句的default 分支是如何处理的?循环有没有可能出现死循环? | ||
4 | 有没有使用断言(Assert)来保证我们认为不变的条件真的得到满足? | 没 有 | |
5 | 有无可能存在资源泄漏(内存、文件、各种GUI 资源、数据库访问的连接,等等)?有没有优化的空间? |
可能;有 |
|
6 | 数据结构中有没有用不到的元素? | 有 | |
效能 | |||
1 | 代码的效能(Performance)如何? | 较 好 | |
2 | 代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类、C#中 string的操作是否能用 StringBuilder 来优化)? | 是 | |
3 | 对于系统和网络的调用是否会超时?如何处理? | 否 | |
可读性 | |||
1 | 代码可读性如何?有没有足够的注释? |
良 好 存 在 |
|
可测试性 | |||
1 | 代码是否需要更新或创建新的单元测试? | 是 |
(3)选取其中一个成员的项目为基础,进行结对编程。结对项目撰写的博客要求。
(a)结合课堂讲授内容,制订一份2人共同遵守的代码编写基本规范(至少包括注释规范与变量命名规范)。
1.缩进规范:用四个空格,不使用Tab键。
2.行宽规范:行宽可以限定为100个字符。
3.括号规范:在复杂的条件表达式中,用括号清楚地表明逻辑优先级。
4.断行与空白的{ }行规范:选择每个“{”和“}”都独占一行的格式。
5.分行规范:不要把多条语句放在一行上,更严格地说,不要把多个变量定义在一行上。
6.变量命名规范:
(1)变量命名中不要提到类型或其他语法方面的描述。
(2)避免过多的描述。
(3)如果信息可以从上下文中得到,那么此类信息就不必写在变量名中。
(4)避免可要可无的修饰词。
7.下划线:
下划线用来分隔变量名字中的作用域标注和变量的语义。
8.大小写:
用大小写来区分由多个单词组成的变量名。
7.注释规范:
(1)复杂的注释应该放在函数头。
(2)注释也要随着程序的修改而不断更新。注释只用ASCII字符,不要用中文和特殊字符,影响程序可移植性。
(3)使用不同的显示风格来表示程序的不同部分。
(b)描述结对编程的感受。
通过这次结对编程,我们两人都学到了很多以前没有学到的知识。
①首先,我们了解到了代码复审的各个流程,如何规范自己的程序。
②在自我复审和同伴复审的过程中,了解到了对方程序的优越性,也发现了自己的程序中很多没有发现的漏洞,并很好的做出了修复,实现了程序的完整性和正确性。
③在结对编程的过程中,互相取长补短,提高了团队合作精神,共同进步,也学到了更多现代软件工程的知识。
(c)结对场景照片
(4)结对项目编程要求
对结对项目首先完成代码规范和设计规范的修改,其次完成项目增加的需求,最后将完成的项目提交到github上,给出github的连接地址,可以给出简单的设计说明。
增加的需求:
①程序修改后不仅运用了if、else分支提高了程序的运行速度,还运用了switch分支语句,大大加快了程序的运行速度。
②考虑数据异常处理问题,如在输入题目生成范围的数据时,输入了“abc“等字符数据,程序如何处理。
③增大算式生成数的范围(如整数存不下的数),程序如何处理。
(4)github地址
https://github.com/dong-dong-dong/dong