一、提供你的结对成员的博客链接地址
常颖同学的博客地址:https://www.cnblogs.com/nuah/p/11721555.html
二、结对成员对四则运算项目进行代码互审,并给出代码审查结果表
根据书上76页的代码复查的核查表,常颖对我的代码进行了复查,我对常颖的代码进行了复查,结果如下:
|
复查内容 |
南海茹的代码复查(由常颖完成) |
常颖的代码复查(由南海茹完成) |
概要部分 |
代码符合需求和规格说明么? |
没有完成删除重复运算的功能 |
没有完成删除重复运算的功能以及结果存储到本地的功能 |
代码设计是否考虑周全? |
总体来说比较周全,但是有些边界值没有考虑到 |
总体来说比较周全,但是有些边界值没有考虑到 |
|
代码可读性如何? |
可读性很好 |
可读性很好 |
|
代码容易维护吗? |
不太容易维护,因为所有方法都在一个类里面 |
不容易维护,因为所有方法都在一个类里面,且是用C语言编写 |
|
代码的每一行都执行并检查过了吗? |
都已经检查过 |
都检查过 |
|
设计规范部分 |
设计是否遵循已知的设计模式或项目中常用的模式? |
有遵循 |
遵循了 |
有没有硬编码或字符串/数字的存在? |
没有 |
没有 |
|
代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到win64)? |
没有依赖某一平台 |
用C语言编写的代码,所以可能不太利于后期课程的学习 |
|
开发者新写的代码能否用已有的Library/SDK/Framework 中的功能实现?在本项目中是否存在类似的功能可以调用二不用全部重现实现? |
没有 |
没有 |
|
有没有无用的代码可以清除? |
有些之前修改的代码用注释注掉 |
有些注释的修改的代码,还有几个没有用到的变量 |
|
代码规范部分 |
修改的部分符合代码标准和风格吗? |
符合 |
符合 |
具体代码部分 |
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? |
有处理错误,检查了返回值并处理了异常 |
有处理错误,检查了返回值并处理了异常 |
参数传递有没有错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数? |
参数传递没有错误,字符串的长度是字符长度,以0开始计数 |
参数传递没有错误,字符串的长度是字符长度,以0开始计数 |
|
switch语句的default分支是如何处理的?循环有没有可能出现死循环? |
没有default分支,不会出现死循环 |
没有default分支,不会出现死循环 |
|
数据结构中有没有用不到的元素? |
没有 |
有些变量没用到 |
|
效能 |
代码的效能(Performance)如何?最坏的情况是什么样的? |
代码效能较慢,最坏可能造成编程软件卡死 |
代码效能较慢,最坏可能造成编程软件卡死 |
代码中是否有明显可优化的部分? |
有可优化的地方 |
有可优化的地方 |
|
对于系统或网络的调用是否会超时?如何处理? |
不涉及此问题 |
不涉及此问题 |
|
可读性 |
代码可读性如何?有没有足够的注释? |
代码可读性可以,注释虽少但清晰 |
代码可读性很好,有足够的注释 |
可测试性 |
代码是否需要更新或创建新的单元测试? |
需要创建新的单元测试 |
需要创建新的单元测试 |
三、选取其中一个成员的项目为基础,进行结对编程。结对项目撰写的博客要求:
(1)结合课堂讲授内容,制订一份2人共同遵守的代码编写基本规范(至少包括注释规范与变量命名规范)。
代码风格原则是:简明,易懂,无二义性。
缩进:
1. 缩进4个空格
2. 大括号的开始在代码块开始的行尾,闭合在和代码块同一缩进的行首
行宽:不超过100个字符
断行与空白的{}行:采用每个“{”和“}”都独占一行的形式
分行:每条语句各占一行,不要把多余的变量定义在一行
括号:在复杂的条件表达式中,用括号表达逻辑优先级
变量命名规范:
1. 由$、字母、数字和下划线组成,首字母不为数字
2. 使用英文单词来命名变量(避免使用中文出现乱码)
3. 变量名中不要出现类型或其他语言方面的描述
4. 避免过多的描述
5. 避免使用过长的名字命名
6. 可采用大小写混合的方式命名
大小写规范:
用Camel形式编写(第一个单词全部小写,随后单词的第一个字母都大写)
注释规范:
1. 复杂的注释放在函数头
2. 注释应尽量简洁明了,明确程序所需信息即可
3. 行注释(在句尾使用//进行注释)
4. 字段名注释(使用/* */注释)
5. 类注释(使用/* */注释)
6. 块级别注释(单行时用// 多行时用/* */)
(2)描述结对编程的感受。
一开始,我以为这个真的麻烦,还要一直跟对方解释我为什么要这样做,有分歧了还要辩论。
但是结对之后我发现不是这样的,结对编程就是互相监督的过程,
你的一举一动都在对方的视线范围内,所有的想法都要受到对方的评价。这种督促的压力,使得我必须认真编写程序。
而且结对编程迫使我们必须频繁交流,而且要提高自己的技术能力,以免被对方看不起。
因为我们两个人的角色是经常转化的,所以也不会对彼此不公平,我们彼此的观察力和判断力都有所提高。
而且这个过程是我们互相学习、互相磨合的过程,有什么想法跟对方分享,使双方都会有知识面的扩充。
有什么不懂的一起查资料,一起能理解共同进步。
但是可能是我刚开始接触结对编程的原因,我觉得有人盯着我编程我有点不自在,有些想法放不开,总是在想说出来
不知道对不对这种问题,我觉得耽误了很多时间,对于别人说的想法不知道怎么评价。
(3)结对场景照片
四、结对项目编程要求:
通过代码审核我们两人决定运用南海茹的代码进行本次作业的完成,因为相对来说功能完成先对更好一些,并且用的Java编程语言。
我们修改的地方如下:
(1)原来本来所有的实现方法都在同一个类中,后来将加,减,乘,除四个运算的运算方法分别放到四个类中来实现
(2)如何判断运用那个运算进行计算时,以前运用的是if,else分支完成的这样的就导致了程序的运行速度,所以改成switch分支语句,加快了程序的运行速度。
(3)对运算的边界值进行了处理,对一些异常进行了处理。
(4)对如果用户输入了abc等字符时出现的异常进行了处理。
github的连接地址:https://github.com/xiaoaru111/fist