OO课程第二次总结

一、三次作业的设计策略及其变化

  第五次作业是直接按照消费者生产者模型写的,我将这个模型用在了输入处理线程和调度器线程以及调度器线程和电梯线程之间。因为在ppt上,老师已经将大体思路告诉我们,所以我的主要精力是放在设计的实现上。第六次作业设计成对每一个合法的监视请求都单开线程,但锁文件成了麻烦。第七次作业我将出租车和请求都用进程实现,没有建立请求队列实现生产者消费者模型。其实这几次作业里,由于时间紧,我都没有在多线程协同和同步控制方面的设计策略上做研究,只求能在ddl之前写完。因此策略基本是想到什么写什么,什么好写写什么,变化也没规律可循。

二、程序结构分析

  第五次作业

    1.Metrics分析结果

      

    2.类图

      

    3.UML协作图

      

    4.存在的问题和不足

      (1)按钮完全可以新建一个类来管理,实现按钮的按下与弹起。

      (2)构造方法参数过多。

      (3)责任分配不够均衡。

  第六次作业

    1.Metrics分析结果

      

    2.类图

      

    3.存在的问题和不足

      (1)程序没有写完,存在很多bug。

      (2)违反重用原则,虽然我将四个监视器类都继承了总监视器类,但四个类里方法基本都是一样的,只是几个参数不同。

  第七次作业

    1.Metrics分析结果

      

    2.类图

      

    3.UML协作图

      

    4.存在的问题和不足

      (1)程序里的坐标都是横纵分开,以int类型使用,这个可以建立一个坐标类保存。还能减少方法里的传递的参数个数。

      (2)类构造方法里的参数过多。

三、程序bug分析

  (一)自己程序的bug

      1.第五次作业我输出时间用的是系统时间,因此误差有时很明显。在CPU繁忙的时候就很容易出现0.5以上的输出误差,这是因为我没有模拟正确的输出时间导致的。公测因为这个对方给我报了6个bug,虽然在CPU占用不多的时候,我的程序是能正确输出,但不能保证绝对没问题。互测被报了一个crash,原因是我设置的结束进程的方法没有起作用,程序运行无法正常结束。我之前也发现了这个问题,但没时间改了,而且当时觉得差不多就是个error,所以就进行处理。

      2.第六次作业由于要去外地参加活动就没时间写完,最后在readme里让对方直接报无效了。

      3.第七次作业忘记忽略起始地和目的地相同的乘客请求了,被报了一个error。

  (二)发现别人程序bug所采用的策略

      1.首先是用自己测过的测试样例把对方的程序测一遍。因为这些样例里包含了我在设计时看到或者踩到的坑。

      2.进行一定大小的压力测试。在第七次作业互测时,我一次性输入了多条指令,可他的程序在输出完“”地图不连通,程序结束”后就自动结束了,这个问题我也出现过,原因是gui.java里的一个检验地图是否连通的部分有bug。我把这一部分注释了就解决了。

      3.直接看代码,这几次作业设计框架都不算很复杂,因此看代码的方式是可行的。边看边查找设计缺陷,发现了就构造样例进行验证。

四、心得体会

    1.留充足的时间进行思考和设计,因为没有一个好的设计,很难避免中途推倒重写或者打成千上万个补丁。

    2.要有足够的耐心。我之前每次遇到新问题时都会烦躁,于是又拿起手机开始刷各种信息。结果就是写代码的效率低下,无形中浪费了很多时间,还让进度停止不前,自己也身心俱疲。所以我也在不断尝试寻找一个由内而外的动力,让自己能够乐于去克服各种问题,而不至于很厌烦他们。

    3.现目前掌握的知识实在是太有限了,难以很好地解决写代码过程中的各种问题。因此还需要多查阅各种相关资料,学习优秀的编程技巧。

猜你喜欢

转载自www.cnblogs.com/cinyinei/p/8979725.html