第一次作业由于直接没怎么学过java,全靠一星期速成,前几天看了java的语法,但是因为光看没有打代码,学习效果并不是特别好。由面向过程转向面向对象,不是特别清楚该怎么办,虽然写的是两个类,但实际上是one-for-all的方法,所有的计算和输入输出全写在一个类里面导致一个main方法里嵌套多层判断,层次非常乱。输入根据指导书提示学习使用正则表达式来匹配。由于刚开始学习,所以第一次作业只能匹配出正确形式的输入。因为时间安排不合理,最后剩余debug的时间不多,导致没赶上提交的时间。第一次作业暴露了很多的问题,时间投入不够,面向对象思想的转变,正则表达式的学习,以及debug。
第二次作业是写傻瓜式电梯,和第一次笔比较,这次作业更具体,根据指导书提供的设计框架,让人更容易设计。因为这次作业的电梯调度比较简单,所以,这次主要是的问题是电梯调度类和请求类,请求队列类的关系。这次因为设计原因,把处理同质请求和计算时间都放在了调度类,统一输入,统一处理。仅在请求类里对不合理请求处理。在最后的debug环节里,发现自己的程序没有输出,最后de了半天才发现,之前用与存请求队列的数组是自己设定的定长数组,导致后来数组越界,改完bug后终于能过测试树的点了。在这次作业中,因为自己设计的原因基本没用上电梯类和楼层类,代码比例很不平衡。到第三次作业才意识到这会对我的代码产生很严重的影响。
第三次作业是对第二次的傻瓜式电梯做一些改进,主要是调度方法的改变,增加一个对捎带请求的处理。这次作业是对第二次作业的延伸,需要用到接口的实现和继承父类,以及对父类方法的重写。这时,第二次作业中调度类过于冗余的问题就体现出来了,电梯类和楼层类过于简单,导致重写捎带请求和重新处理同质方法时改变代码太麻烦,重写之后不能运行,再debug后只能处理非同质的请求,同质请求后的正常捎带请求无法处理。 这时我对自己第二次作业不均衡的代码分布感到很烦恼,对调度类debug的过程让人很难受。这些问题本都可以很好的避免,因为读指导书的不认真,导致设计的随意,以致一步步对代码产生越来越严重的bug,不仅是语法上的错误,更是设计逻辑上的问题。
总结:
三周的学习,让我知道写程序时设计合理的重要性,以及投入足够时间的必要性。debug也只是按照公测的结果来找bug,或者在设计之初就分好自己的校对树,但一般都没公测来的全面。经过这三次作业,能明显感觉到每周都在提升,这个过程确实比较吃力,可能学习方法上有不合适的地方,更多的可能是时间投入的不够。会在之后的作业改正,提升设计的能力。