结对作业

本次结对: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. nginx+uwsgi+flask+supervisor 项目部署

    环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...

  2. tp框架如何处理mysql先排序在分组

    $giModel = M('GroupIntegral'); $gi_table = $giModel->order('id desc')->limit('999')->buildS ...

  3. java 一个数字的位数不够怎么在前面加0

    import java.text.DecimalFormat; //(1).如果数字1是字符串,如下处理: String str1="1"; DecimalFormat df=ne ...

  4. Debian使用dpkg安装MySQL

    说明 本文写于2017-10-03,使用MySQL 5.7,操作系统为64位 Debian GNU/Linux 8.6 (jessie). 安装 因apt仓库将mysql相关的包移除,需要自己去官网下 ...

  5. 自己写的一些Excel及WordVBA函数[原创]

    1.将Excel当前工作表另存至桌面 Excel中有时一个工作簿中工作表特别多,需要快速单独存取其中一个,可用以下代码快速存至桌面 Sub 另存工作表到桌面() Dim sh As Worksheet ...

  6. 20155301 2016-2017-2 《Java程序设计》第3周学习总结

    20155301 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 1.在clothes类中定义了两个变量,很像C语言中自定义变量,clothes属于非公开类. ...

  7. Linux 用C语言实现简单的shell(1)

    发一波福利,操作系统的实验内容,大家可以借鉴一下,不过我的代码可能也存在一定的问题. 因为在一开始老师是一节一节课教的,当时并不知道后面还会用输入输出重定向,管道等一系列问题,我的兴趣也不在这个方面也 ...

  8. 我与虚拟机的初次接触及初探Liux命令 20155338

    初识虚拟机及学习Linux命令的些许收获 虚拟机的安装 这个假期算是第一次正式的接触了虚拟机,以前在平时生活中也有听到过,但是真正自己动手安装虚拟机却是第一次,确实是既紧张又兴奋. 我是依据老师所发的 ...

  9. PostgreSQL参数学习:wal_keep_segments

    http://www.postgresql.org/docs/9.3/static/runtime-config-replication.html 参考官方文档: wal_keep_segments ...

  10. dsu on tree总结

    dsu on tree 树上启发式合并.我并不知道为什么要叫做这个名字... 干什么的 可以在\(O(n\log n)\)的时间内完成对子树信息的询问,可横向对比把树按\(dfs\)序转成序列问题的\ ...