第二次结队作业

一.题目介绍

此次我和队友(李卓儒)选择的题目是第一道题目,我在这次作业中担任的角色是领航员。

1.题目:

我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:

  • 能够自动生成四则运算练习题
  • 可以定制题目数量
  • 用户可以选择运算符
  • 用户设置最大数(如十以内、百以内等)
  • 用户选择是否有括号、是否有小数
  • 用户选择输出方式(如输出到文件、打印机等)
  • 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)

2.需求分析

看到题目,我们都不会陌生,或许我们都给小孩出过这样的习题,有时候老师在学校也会留这样的作业给家长,让家长给孩子出多少道混合运算题目,由于人工出题,若是量大,写起来很麻烦,而且不保证会出重复的题目。通过编写的自动生成四则运算题目,可以很快又不会重复的出题,很具有实用性。

二.代码

1.代码地址

2.测试代码部分截图

3.运行的图形界面

三.代码审查表

java代码审查检查表


重要性


激活


级别


检查项


总计


命名


重要

Y
20


命名规则是否与所采用的规范保持一致?

Y
20


是否遵循了最小长度最多信息原则?


重要

N
50


has/can/is前缀的函数是否返回布尔型?


注释


重要

Y
10


注释是否较清晰且必要?


重要

Y
10


复杂的分支流程是否已经被注释?

Y
10


距离较远的}是否已经被注释?

N
10


非通用变量是否全部被注释?


重要

Y
50


函数是否已经有文档注释?(功能、输入、返回及其他可选)

Y
10


特殊用法是否被注释?


声明、空白、缩进

Y
20


每行是否只声明了一个变量?(特别是那些可能出错的类型)


重要

Y
40


变量是否已经在定义的同时初始化?


重要

Y
40


类属性是否都执行了初始化?

Y
20


代码段落是否被合适地以空行分隔?

Y
20


是否合理地使用了空格使程序更清晰?

Y
20


代码行长度是否在要求之内?

Y
20


折行是否恰当?


语句/功能分布/规模

Y
20


包含复合语句的{}是否成对出现并符合规范?

N
20


是否给单个的循环、条件语句也加了{}?

Y
20


if/if-else/if-else if-else/do-while/switch-case语句的格式是否符合规范?

N
40


单个变量是否只做单个用途?


重要

N
20


单行是否只有单个功能?(不要使用;进行多行合并)


重要

Y
40


单个函数是否执行了单个功能并与其命名相符?

Y
20


操作符++和— —操作符的应用是否复合规范?


规模


重要

N
20


单个函数不超过规定行数?


重要

N
100


缩进层数是否不超过规定?


重要

N
100


是否已经消除了所有警告?


重要

Y
40


常数变量是否声明为final?


重要

N
80


对象使用前是否进行了检查?


重要

N
80


局部对象变量使用后是否被复位为NULL?


重要

Y
70


对数组的访问是否是安全的?(合法的index取值为[0, MAX_SIZE-1])。


重要

Y
20


是否确认没有同名变量局部重复定义问题?

Y
20


程序中是否只使用了简单的表达式?


重要

Y
20


是否已经用()使操作符优先级明确化?


重要

Y
20


所有判断是否都使用了(常量==变量)的形式?

Y
80


是否消除了流程悬挂?


重要

Y
80


是否每个if-else if-else语句都有最后一个else以确保处理了全集?


重要

无该语句
80


是否每个switch-case语句都有最后一个default以确保处理了全集?

N
80


for循环是否都使用了包含下限不包含上限的形式?(k=0; k<MAX)


重要

N
40


XML标记书写是否完整,字符串的拼写是否正确?

无该语句
40


对于流操作代码的异常捕获是否有finally操作以关闭流对象?

N
20


退出代码段时是否对临时对象做了释放处理?


重要

Y
40


对浮点数值的相等判断是否是恰当的?(严禁使用==直接判断)


可靠性(函数)


重要

N
60


入口对象是否都被进行了判断不为空?


重要

Y
60


入口数据的合法范围是否都被进行了判断?(尤其是数组)


重要

Y
20


是否对有异常抛出的方法都执行了try...catch保护?


重要

Y
80


是否函数的所有分支都有返回值?


重要

Y
50


int的返回值是否合理?(负值为失败,非负值成功)

N
20


对于反复进行了int返回值判断是否定义了函数来处理?

Y
60


关键代码是否做了捕获异常处理?


重要

N
60


是否确保函数返回CORBA对象的任何一个属性都不能为null?


重要

N
60


是否对方法返回值对象做了null检查,该返回值定义时是否被初始化?


重要

N
60


是否对同步对象的遍历访问做了代码同步?


重要

N
80


是否确认在对Map对象使用迭代遍历过程中没有做增减元素操作?


重要

Y
60


线程处理函数循环内部是否有异常捕获处理,防止线程抛出异常而退出?

N
20


原子操作代码异常中断,使用的相关外部变量是否恢复先前状态?


重要

Y
100


函数对错误的处理是恰当的?


可维护性


重要

Y
100


实现代码中是否消除了直接常量?(用于计数起点的简单常数例外)

Y
20


是否消除了导致结构模糊的连续赋值?(如a= (b=d+c ))

N
20


是否每个return前都要有日志记录?

N
20


是否有冗余判断语句?(如:if (b) return true; else return false;)

Y
20


是否把方法中的重复代码抽象成私有函数?

四.任务评价

到了结对作业的第二次作业,其中队友负责全部代码的工作,这次作业是用java编写的,由于自身对java了解不多,作业出来后,我也是恶补了一些java的知识,与其说是完成作业,更多的是其中的学习,和队友一起思考,一起进步。起初我对于这些代码很是头疼,很容易就看不懂其中的意思,通过翻书等了解了语句的意思,进而懂得了要实现的东西,懂得了之后再去找可能出现的问题,编写单元测试检查代码的可实用性。

平时我是一个有点拖延症的人,几乎作业发布出来后,我都得拖个几天再去写作业。但是由于这次作业的特殊性和我的队友的积极性,我也很快的就投入到了作业中去,在这期间,队友不断地修改代码,我们还去图书馆借了有关图形界面的书(Qt),他还添加了许多作业没有要求的东西,在我看来,他并不是要完成作业,而是要把事情做得漂亮,我觉得这对于以后的工作很有帮助,他对待事情的认真性,让我受益颇多。队友的编程能力很强,但是他也会问我需要加什么东西进来,让结果看起来更好,对比上次作业,我们之间的交流多了许多,让我了解到自己的不足,更加努力的学习。

编写单元测试时,由于基础薄弱,队友在一旁很是耐心仔细的帮助我,一些遗漏的东西与不懂的问题,他都能给我很好的指点,让我很快认识到错误,了解自己将要完成什么。测试代码主要是先测试生成的式子是否合法,然后对产生的式子进行运算,看是否与理论值相符。开始编写的时候没有考虑到0,后来发觉除法是0作为除数的不合法性,我们又进行了一些修改,使这次的作业完成的很是完美。至此,最是感谢我的队友给予的帮助。

最后附上我们工作的照片

原文地址:https://www.cnblogs.com/WangNingSH/p/8830295.html

时间: 2024-09-29 18:12:53

第二次结队作业的相关文章

SDN第二次上机作业

SDN第二次上机作业 1.安装floodlight 参考链接:http://www.sdnlab.com/19189.html 2.生成拓扑并连接控制器floodlight,利用控制器floodlight查看图形拓扑 拓扑如图所示 提交要求:控制器floodlight所示可视化图形拓扑的截图,及主机拓扑连通性检测截图 3.利用字符界面下发流表,使得'h1'和'h2' ping 不通 参考链接:http://www.sdnlab.com/19394.html 提交要求:流表截图,及拓扑连通性截图

关于第二次阅读作业中&quot;银弹&quot;“大泥球”等的个人理解

这几天时间比较充裕,就一点一点的借助英语翻译(毕竟英语不好)阅读了一下老师建议的论文作品.感觉他们的思维和我们的是不在一个角度上的,在我们看来,编写代码的任务仅仅就是实现了设计文档中的功能,而这些在课程设计中往往能满足要求,但是在长远方向看和软件优化的角度来思考,我们的设计都是极其糟糕的..... 大师的角度中,程序员实现软件最最本质的东西,就是软件在概念抽象和应用于电脑上的两个方面,软件在概念上的抽象性设计解决方案是很困难的,而软件施行与电脑上也是具有挑战性.在大师的启发下,我对4个方面的困难

第二次阅读作业--12061161 赵梓皓

阅读笔记之No Silver Bullet 本文中,作者的观点是没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍(1986) 作者列举的原因是 代码的完成分为两部分: 抽象(建模)和 代码实现.根据我个人的理解,就是 设计和实现的过程.作者认为实现过程的速度相对来说比较好的提高,但是 设计的过程很难提高.而根据设计过程在整个项目中占的比例要大于1/10,所以得出结论没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍. 我认为,作者的见解相对来说是比较合理的.实现的过程是人与机器

【助教】第二次编程作业[初稿]

童鞋们好,通过和老师商量,决定第二次的编程作业要求如下: 1) 从第一次作业出发,将程序改装成一个单机带用户界面(不是控制台)的程序.    2) 我们会列出 8 个可以扩展的方向,相互独立.     3) 老师会让同学两两结对, 根据学号做一个数学映射, 选取 8 个可扩展方向上面的 4个,每个结对的同学提交的一份代码里面必须独立实现这 4 个方向.    4) 两个童鞋只需要一个童鞋将代码提交到博客,代码提交要求参见:http://www.cnblogs.com/greyzeng/p/437

结队作业之电梯调度算法

结队成员:沈聪和......习志敏,没错,就是我俩. 习志敏博客链接:http://www.cnblogs.com/xizhimin/ 沈聪博客链接:http://www.cnblogs.com/congshen/ 前言 非常开心能有这次学习编程的机会,也很感谢学校能给我们这样一个编程的环境,从进学校开始,几乎每一次编程都是需要别人协助和指导,现在有这个机会得以锻炼锻炼,感觉还不错,而且这次能有一个搭档真的是很高兴,这次结队编程中,我很荣幸能够和习志敏成为一队,刚开始,我们对对方都不是特别了解,

现代软件工程第二周的作业

现有的命名方式有多少种?请举例说明 一.匈牙利命名法: 广泛应用于象 Microsoft Windows 这样的环境中. Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一 位能干的 Microsoft 程序员查尔斯· 西蒙尼(Charles Simonyi) 提出的. 匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀, 标识出变量的作用域, 类型等.这些符号可以多个同时使用,顺序是先 m_(成员变量),再指针,再简单数据类型, 再其他.例如:

第二骗+第一次作业

这是一个每5分钟自动获取河大教务处最新通知的小的不能再小的程序,还是一个可怕的死循环,本来设想是每次循环结束后一分钟之内输入结束即可退出,不输入的话自动跳过并继续循环,不过实在不知道咋办了,百度看不大懂,以后多学一些应该就可以了. import requests import time import re #按照课本推荐的方式定义获取文本的方式,防止网络问题导致错误 def gethtmltext(url): try: r = requests.get (url,timeout=30) r.ra

【周末作业】2015.7.15 第二周 css作业及答案

[作业题] 一.问答题 1. CSS选择器以及引入方式哪几种,CSS选择器有哪些以及它们的优先级 2. 行内元素和块级元素的区别,分别举出6个行内元素和块级元素,块级元素的特点是什么 3. 改变元素外边距是什么属性,改变元素内边距是什么属性 4. 如何让一个div在页面中居中 5. 如何隐藏一个div 6. CSS的注释是什么 7. 怎样定义li列表项目符号为实心矩形 8. margin:5px 2px; 表示什么 9. CSS产生浏览器兼容性问题的原因是什么,举出三个处理浏览器兼容性问题的例子

第二次阅读作业

一开始看到阅读作业的时候我感觉老师给的时间还是很充裕的,但是在阅读的过程中我还是感觉不是很充分,其中一个很重要的原因就是由于自己的英语水平有限,在阅读的过程中需要经常性的去查单词,造成阅读中的一些中断,以至于思维不是很连续.但是还好,由于时间较充分且我开始的较早,这一个问题还是被自己克服了,没有造成太大的影响.首先我先说一说自己对于这些文章的理解吧.第一篇文章是No Silver Bullet: Essence and Accidents of Software Engineering.在这篇文