OO第四次作业

OO第四次作业

作业1 多项式运算

oo度量

1347251-20180403215401010-326820087.png

类图

1347251-20180403215411500-304708522.png

程序很简单明了,所以各个指标也还算符合要求。(当然...还不够好)

bug反思

自己的程序未被同学找出bug,但readme书写的并不完善,没有对所有可能出现的情况做出说明。匹配到的同学程序输入采用的是状态机,忽略了一些输入导致的异常。(由于我也是用的状态机所以对于可能出现的bug格外熟悉)
第一次作业结束后我自学了正则表达式,体会到了这货的方便之处,为以后减少了很多输入上的复杂性。

作业2 傻瓜电梯

oo度量

1347251-20180403215422723-1670447583.png

圈复杂多过高,类的设计不够合理

类图

1347251-20180403215428670-688252395.png

其实light类的子类完全是在当结构体用
程序很简单,

bug反思

自己的程序在公测中出现了一个bug。在判断指令时序时,我只判断了FR,而没判断ER。与其说是疏忽,我更愿意把错误归结于程序书写策略。因为在判断时间时ER,FR的行为完全一致,程序中,这样相同的工作应该只出现一次,而不是被反复书写。匹配到的同学没有bug,很优秀!

作业3 ALS电梯

oo度量

1347251-20180403215438013-1095549722.png

圈复杂多过高,类的设计不够合理

类图

1347251-20180403215534415-1112006115.png

Scheduler类有些繁琐了

bug反思

我和我匹配到的同学的程序中都未发现bug。我们真棒!

bug分析策略

在构建测试集的时候,我会按课上给出的分支树遍历自己程序的各个功能,并单独测试一些特殊情况;除此之外,构造压力测试,极限数据,也必不可少。
在做完这些后,我们也可以利用脚本生成一些大量而随机的输入,运行出结果后与同学做对比(我使用了Windows下自带的fc功能),从而根据程序行为找到bug。

心得体会

不急于编码

想起来去年计组时高老板说的"写代码前先思考,不要急于编码,要追求加速式回报"。想来这对OO也是很有帮助的,在写程序前,我们应先思考程序的目标是什么,为此我们应该用什么数据结构来维护数据,用什么算法来实现功能。有了思路之后,再对自己的程序编码,测试,这能大大减少不必要的修改。

设计合理的类

想必各位听过"God Class"和"Idiot Class"那个笑话了,实话说,我在前三次作业中出现了很多这样的情况,有些类定义了一堆数据和方法却没用过,有些类实现了太多功能,回头看来颇是搞笑。比如第二次作业的Floor类

public class Floor{
    public int[] f;
    public Request FR(Request FloorRequest,ReqQueue Q){
        Q.receive(FloorRequest);
    }
}

这个解析FR指令的功能我原想在Floor类中实现,编码编到一半就忘了...然后就出现了一个傻瓜类("Idiot Class") = =| | |

转载于:https://www.cnblogs.com/Andyson/p/8711212.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值