任务1:在学习通上注明结对的成员对 :
3班程福健 - 3班黄晓天
任务2:结对的成员共同完成本次作业,撰写博客并将结对项目的程序发布到github上
博客内容安排:
(1)结对成员程福健的博客链接地址
https://www.cnblogs.com/smiorboy/
(2)代码互审表
|
互查内容 |
程福建 |
黄晓天 |
1.概要部分 |
代码符合需求和规格说明么? |
符合 |
符合 |
代码设计是否考虑周全? |
周全 |
不周全 |
|
代码可读性如何? |
易读 |
易读 |
|
代码容易维护么? |
容易 |
容易 |
|
代码的每一行都执行并检查过了吗? |
是 |
是 |
|
2.设计规范部分 |
设计是否遵从已知的设计模式或项目中常用的模式? |
是 |
是 |
有没有硬编码或字符串或数字等存在? |
有 |
无 |
|
代码有没有依赖于某平台,是否会影响将来的移植(如Win32到Win64)? |
无 |
有 |
|
开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?是否存在类似的功能可以调用而不用全部重新实现? |
否 否 |
否 否 |
|
有没有无用的代码可以清除? |
无 |
有 |
|
3.代码修改部分 |
修改的部分符合代码标准和风格么(详细条文略) ? |
符合 |
符合 |
4.具体代码部分 |
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? |
有 是 |
有 是 |
参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单1双字节)的长度,是以0开始计数还是以1开始计数? |
无 0 |
无 0 |
|
边界条件是如何处理的? switch 语句default分支是如何处理的?循环有没有可能出现死循环? |
开始先指定边界条件;当没有defaul分支时,如果没有满足条件的case,直接结束switch;不会出现死循环 |
先确定边界条件是什么,没有defaul分支时,无满足条件语句直跳出switch语句,不会出现死循环。 |
|
有没有使用断言( Assert)来保证我们认为不变的条件真的得到满足? |
无 |
无 |
|
对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄漏(内存、文件、各种GUI资源、数据库访问的连接,等等) ?有没有优化的空间? |
申请全局变量,在程序运行完后释放掉;无动态申请资源的地方,资源全部限制在函数或者类的局部范围之内不会出现资源泄露的情况。 |
申请全局变量,在程序运行完后释放掉;有限次申请,所以可能不会导致资源泄露。 |
|
数据结构中有没有用不到的元素? |
无 |
无 |
|
5.效能 |
代码的效能( Performance )如何? |
良好 |
良好 |
代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C#中string的操作是否能StringBuilder来优化) ? |
否 |
否 |
|
对于系统和网络的调用是否会超时?如何处理? |
否 |
无调用 |
|
6.可读性 |
代码可读性如何?有没有足够的注释? |
易读 足够 |
易读 足够 |
7.可测试性 |
代码是否需要更新或创建新的单元测试?针对特定领域的开发(如数据库、网页、多线程等),可以整理专门的核查表。 |
需要 |
需要 |
(3)选取其中一个成员的项目为基础,进行结对编程。结对项目撰写的博客要求:
(a)结合课堂讲授内容,制订一份2人共同遵守的代码编写基本规范(至少包括注释规范与变量命名规范)。
1、缩进:4个空格;
2、行宽:行宽限定为100字符;
3、括号:在复杂的条件表达式中,用括号清楚地表示逻辑优先级;
4、断行与空白的{}行:每个“{”和“}”都独占一行;
5、分行:不要把多条语句放在同一分行上;
6、类命名:首字母大写,每个单词首字母大写(大驼峰命名法),尽量使用能够反映类功能的名词短语,例:UserManage ,UserData等;
7、方法名:首字母小写,剩余的每个单词的首字母大写(小驼峰命名法);
8、变量名:首字母小写,之后每个单词首字母都大写,具有足够的说明性,成员变量不需要添加“_”前缀,成员变量添加“_”前缀;
9、注释要求:在方法内部注释的地方使用//即可。复杂的注释要放在类头,并且注释要随着程序的修改而不断更新;
10、方法函数要求:一个函数必须限制在50行左右(如果需要来回滚动眼球或代码才能看全一个方法,就会很影响思维的连贯性,对阅读代码的速度造成比较大的影响。最好的情况是在不滚动眼球或代码的情况下一眼就能将该方法的全部代码映入眼帘。);单一原则:每个函数的职责都应该划分的很明确(就像类一样)。
(b)描述结对编程的感受。
1.发挥”双剑合璧”的威力
俗话说“三个臭皮匠,胜过一个诸葛亮”,大家在做同一件事时,集思广义发挥各自优点,可以使我分析更能切中要害,减少冗余代码,使设计变得更加优雅。
2.相互督促,提高代码质量
相互督促可以使我们都能集中精力,更加认真的工作,任何一段代码都至少被两双眼睛看过,两个脑袋思考过,代码的质量会得到有效提高。
3.相互学习和传递经验
“三人行必有我师”,相互学习对方的技能,可以提升自己水平。
(c)结对场景照片
(4)结对项目编程要求:
对结对项目首先完成代码规范和设计规范的修改,其次完成项目增加的需求,最后将完成的项目提交到github上,给出github的连接地址,可以给出简单的设计说明。增加的需求:
(a)考虑数据异常处理问题,如在输入题目生成范围的数据时,输入了“abc“等字符数据,程序如何处理。
(b)增大算式生成数的范围(如整数存不下的数),程序如何处理。
项目的GitHub地址:https://github.com/cfj0612/python/tree/master