结对作业

本次结对:211606457 郑沐榕、211406242 杨长元

一、预估与实际

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
• Estimate • 估计这个任务需要多少时间 1 1
Development 开发
• Analysis • 需求分析 (包括学习新技术) 200 300
• Design Spec • 生成设计文档 60 30
• Design Review • 设计复审 60 0
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 30 30
• Design • 具体设计 60
• Coding • 具体编码 720 300
• Code Review • 代码复审 45 0
• Test • 测试(自我测试,修改代码,提交修改) 30 0
Reporting 报告
• Test Report • 测试报告 60 0
• Size Measurement • 计算工作量 5 2
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 60 60
合计 1241 723

二、需求分析

通过百度的方式了解到,小学三到四年级的四则运算有如下的几个特点:

  • 混合运算中要包含+、-、×、÷运算
  • 不涉及分数/小数运算
  • 随机数范围要求是[0,10000)

作业要求:

  • 运算符在2~4个(且至少出现两个不同的运算符)
  • 可以加括号
  • 减法运算的结果不能有负数
  • 除法运算除数不能为0,不能有余数

经过分析,我认为,这个程序应当:

  • 判断用户输入的参数是否符合设定的要求
  • 实现加减乘除混合运算
  • 将题目和答案输出到指定文件
  • 一道题目要保证至少包含两个不同的运算符
  • 所有题目要保证不重复

三、设计

1. 设计思路

  • 大概包含四个类:①接收用户输入参数并根据参数调用相应的函数、②生成题目、③计算并返回结果、④存储题目和答案
  • 算法的关键:调度场算法与逆波兰表达式
  • ...

2. 实现方案

-- 分析需求
-- 把几个方法敲出来在进行主方法调用、完善各方法块的的代码(本来整理完需求是想先写注释再敲代码的,结果发现自己还是不太会用这种方法,所以还是边打边想2333)

四、编码

1. 调试日志

没有...我觉得我没有写出出题和解题的功能就是最大的bug,其他都没啥bug。

2. 关键代码

(这是2333上一个任务的需求,但是改过了,新的需求没整出来,没新内容好展示2333)
public static void calculate1(Integer n) {
Random random = new Random();
Map<Integer,String> question = new HashMap<Integer,String>();
Map<Integer,Integer> answer = new HashMap<Integer,Integer>();
for( int i = 1; i <= n; i++) {
int result = 0;
int parm1 = (int)(Math.random() * MAX_NUM); //final static int MAX_NUM = 100;
int parm2 = (int)(Math.random() * MAX_NUM);
int operater1 = random.nextInt()%2;
switch(operater1) {
case 0:
result = parm1 + parm2;
break;
case 1:
if( parm1 < parm2) {
int t = parm2;
parm2 = parm1;
parm1 = t;
result = parm1 - parm2;
}else {
result = parm1 - parm2;
}break;
}
question.put(i, "" + parm1 + operater1 + parm2);
answer.put(i, result);
}

3. 代码规范

  • 1.为了达到代码自己自解释的目标,任何自定义编程元素在命名时,使用精良完整的单词组合来表达其意。但是有些名称实在过于长,这个可以适当的缩写,不要忘文不知义就可以。这个不是客观的规定。
    正例:从远程仓库拉取代码的类命名为 PullCodeFromRemoteRepository。
    反例:变量 int a; 的随意命名方式。

  • 2.注释的双斜线与注释内容之间有且仅有一个空格。

  • 3.方法参数在定义和传入时,多个参数逗号后边必须加空格。
    正例:method("a", "b", "c");--例子中实参的”a”,后边必须要有一个空格。

  • 4.在 if/else/for/while/do 语句中必须使用大括号,即使只有一行代码,为了避免采用单行的编码方式:if (condition) statements;

  • 5.避免采用取反逻辑运算符:
    说明:取反逻辑不利于快速理解,并且取反逻辑写法必然存在对应的正向逻辑写法。
    正例:使用 if (x < 628) 来表达 x 小于 628。
    反例:使用 if (!(x >= 628)) 来表达 x 小于 628。

  • 6.[参考]对于注释的要求:
    第一、能够准确反应设计思想和代码逻辑;
    第二、能够描述业务含义,使别的程序员能够迅速了解到代码背后的信息。完全没有注释的大段代码对于阅读者形同天书,注释是给自己看的,即使隔很长时间,也能清晰理解当时的思路;注释也是给继任者看的,使其能够快速接替自己的工作。

  • 7.在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。
    说明:不要在方法体内定义:Pattern pattern = Pattern.compile(规则);

五、测试

测试点 测试用例 测试结果 是否解决(是如何解决)

(我。。。。。。)

六、总结

emmmm...怎么说呢...先说说结对编程这事吧,因为事先约定,两个人都不知道个人作业和结对作业是穿插进行的,由于队友近期都在带军训(结对作业开始以来两人还没见上面所以photo也没有啦,本来就没在一块打代码2333),所以这次结对互动仅限于网络上少许的交流。然后单纯是疑问有交集,如何解决和代码都没有交集2333最后是先提交了他的代码。另外,我的命令行编译、运行不了.java文件,上一次就不行,百度搜了解决方法都得不到解决,问同学同学说不知道怎么处理,然后就很难受命令行运行不了,就需要改获取输入的方式,判断为空要换方法,正则也不适用,最后测试结果也没做出来= =。然后代码思路方面,开始觉得括号位置随机、数字随机、运算符随机,还要在考虑随机题目产生出来后减数运算不出现负数、以及除法运算不出现小数,把所有问题同时放在一起考虑,就会觉得太复杂了情况太多种了。后来看群上班里同学在交流想法以及今天课上李佳讲他解决问题的一整个思路,会觉得自己想得太局限,没有放开了去想、分析怎么解决(开始也有想到以前数构有讲过二叉树储存运算式,就去翻以前课件,然后发现逆波兰原来和后序表达式有关,查了后缀中缀看了逆波兰,看懂了解题依旧觉得出题难,确实是没有去分解步骤,没有动笔。然后就没有进一步去思考了扶额23333)群上之前在议论提交时间的时候,有同学说到作业太多没时间,可能是因为有重修课程吧,但是如果只剩专业课那其他作业真的并不多,就软工这玩意一直挂着(扶额),花费的时间也最多(而且很多时候就是花了大把时间完了问题还是没解决OWO)。当然,自己没有尽全力想去写出来,有保留。身在曹营心在汉,知道自己以后就业不走敲代码(软件工程就业领域)这些方向,老师说你们就当成做游戏去完成,不要有太大的负担,但是并没有给我是玩游戏(通关)之类的感觉,项目简单也没感觉好玩,项目难度高也没觉得好玩,没有成败感,仅仅只是当成作业去完成;专业课保证基本不落下(软工就...),只是担心毕设,只是担心能否顺利毕业;也没有担心我专业技能学得太差,以后无法以此作为谋生技能;开学以来也一直在反复思考自己选的那条路,近些天终于确定下来了(欢呼OUO),可以开始安排时间为此做准备了。最后觉得很对不住队友(QAQ),没有给他什么帮助,甚至有点拖后腿的性质。以上是本次结对任务期间大致总结。

unknown2的更多相关文章

  1. ntdll.dll函数原型

    /*NTDLL Base Functions*/NTSYSAPI NTSTATUS NTAPI NtAcceptConnectPort( OUT PHANDLE PortHandle, IN PVOI ...

  2. 类结构体 与 byte[] 转换类

    public static class StructConvert { public static object BytesToStruct(byte[] bytes, Type strcutType ...

  3. Nt内核函数原型and中文

    NtLoadDriver 服务控制管理器加载设备驱动. NtUnloadDriver 服务控制管理器支持卸载指定的驱动程序. NtRegisterNewDevice 加载新驱动文件. NtQueryI ...

  4. iOS 调用私有函数安装app 卸载 app

    1.环境 1.OS X EI Caption 10.11.1 & Xcode 7 2.Xcode安装Command Line Tools 3.iPhone 安装AppSync 2.Mobile ...

  5. 阅读 LdrInitializeThunk

    参考: http://blog.csdn.net/hw_henry2008/article/details/6568255 Windows 的 DLL 装入(除 ntdll.dll 外)和连接是通过 ...

  6. 经典的HTML5游戏及其源码分析

    HTML5已经相当强大,在HTML5平台上,我们可以完成很多非常复杂的动画效果,包括游戏在内.早期我们只能利用flash来实现网络游戏,现在我们又多了一种选择,即用HTML5制作游戏.相比flash, ...

  7. golang 学习笔记 ---数组/字符串/切片

    数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成.数组的长度是数组类型的组成部分.因为数组的长度是数组类型的一个部分,不同长度或不同类型的数据组成的数组都是不同的类 ...

  8. Nt函数原型头文件

    //转自看雪,可以作为一个头文件使用,方便快捷 1 NTSTATUS NTAPI NtAcceptConnectPort( OUT PHANDLE PortHandle, IN PVOID PortI ...

  9. 使用Spring提供Quartz来实现定时任务

    Spring功能越来越多了,用起来还很舒服方便,Quartz实现的定时任务就是一个. 首先是配置文件: <?xml version="1.0" encoding=" ...

随机推荐

  1. WebGl 旋转(矩阵变换)

    代码1: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  2. ajax与jsonp定义及使用方法

    ajax 定义 ajax技术的目的是让javascript发送http请求,与后台通信,获取数据和信息. ajax通信的过程不会影响后续javascript的执行,从而实现异步. 同步和异步 现实生活 ...

  3. 关于UIScrollView无限循环滑动

    在使用某宝或某东购物的时候,我们会在其首页看到一个可以滑动的版块,这个版块的实现就是一个UIScrollView.在我们使用UIScrollView的时候会发现,滑动到最后的时候,UIScrollVi ...

  4. MYSQL 入门全套

    MySQL简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅 ...

  5. STM32使用FatFs

    1.定义一些变量在我们代码开始的部分,先定义一些变量供我们使用.这里选择几个来解析一下.第一个FIL file;这个变量是文件的结构体变量,记录了我们打开的文件的信息.使用f_open等函数的时候都要 ...

  6. Linux入门进阶第一天——vim文本编辑器

    一.VI / VIM概述 [更新]:VIM资料参见:http://www.runoob.com/linux/linux-vim.html 是什么? 是一个文本编辑器. Vim是从 vi 发展出来的一个 ...

  7. 20155203 2016-2017-2 《Java程序设计》第10周学习总结

    20155203 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程(Java Socket编程) Java最初是作为网络编程语言出现的,其对网络提供 ...

  8. day4 基础

    1.变量 2.打印名片 3.raw_input() 和 input() 4.变量类型 type 5. if-else 6.标示符的规则 7.关键字 8.运算符 9.print打印多个值 1.变量 sc ...

  9. 「PKUWC2018」Minimax

    题面 题解 强势安利一波巨佬的$blog$ 线段树合并吼题啊 合并的时候要记一下$A$点权值小于$l$的概率和$A$点权值大于$r$的概率,对$B$点同样做 时空复杂度$\text O(nlogw)$ ...

  10. Tp框架之命名空间

    命名空间,相当于虚拟目录 实现自动加载类的机制 初始命名空间:Library文件夹 初始命名空间下面有很多根命名空间: 1.Library里面的文件夹 2.APP的模块文件夹 在tp框架中,只有这两个 ...