第一次OO总结

作业1——多项式加减法


看到这个名字就开始瑟瑟发抖了,毕竟一年前用C语言让我写这么一个程序都很头疼,什么堆栈啊还有结构都稀里糊涂的,更别说用一个完全没接触过的语言来完成最简单的一次作业。像我这样越老心里素质越不行的小菜鸡,连梦里都是我的程序输出不对……

整体评价一下这份作业,有在努力用面向对象的思想来编程,但是不太成功,尽管我并不是一个main文件写到底的。先说优点吧,可能就是代码量相对小一点,但是缺点就更多了。类跟类之间不太协调,主要体现在需要进行运算的类过于复杂,并且一个方法同时具备多个功能,参数传递也有些混乱,这就给调试带来很大的不便,而我本身也是个debug很头疼的人。所以在后面的作业我会更多的思考程序的结构,尽量做到不要太集成,同时注意变量名的定义,提高可读性。

第一次OO总结

第一次OO总结

反馈出来的bug有:爆栈,这个问题我没有尽早发现,因为不太敢拿很长的测试测自己的程序(玻璃心),这个错误的原因是正则表达式的判断太长了,应该拆成两部分用循环套起来进行判断(由于对自己的要求不太高,最后就没有挣扎);还有一个错误是指数的负零,其实这个是改了的,但是后来发现爆栈,也不知道怎么回事,这个负零又判断不了了。我查的那位同学其实没太大问题,就是细节也需要注意,跟程序的整体设计没什么关系。

我也没什么好办法去发现别人的bug,毕竟自己的bug还经常查不出来,可能会从自己不太注意或者好不容易注意到的细节入手吧,至于那种很长的测试,我觉得没太大必要。似乎这种互测机制并没有激起我使劲写测试的动力,也可能是好不容易写出来个能基本实现功能的程序就已经榨干我了,无心互相为难。在此要谢谢分享给我测试的童鞋们!(也就用来测测自己的)

作业2——so-called傻瓜电梯


洋洋洒洒8页的指导书和不断追加细节的要求,让我一度怀疑人生,这真的是傻瓜电梯吗?!面对规定好的设计更是觉得无从下手,就这么不知所措了两天,到了课最多的周一逐渐惆怅,连个思路也没有想好,还没读明白这个电梯什么开关门什么时间。就是我这个熬不住夜的小菜鸡,也破天荒的因为学习1点还没睡。终于在大佬们的carry下磕磕绊绊的写出了个漏洞百出的电梯。当然了,漏洞百出也比因为readme用PDF阅读器能看到个人信息被无效好……

第一次OO总结

第一次OO总结

其实,这个程序除了有一些小功能存在问题外,还是挺优秀的。从这图上能明显看到的不足是命名的混乱,当然这个问题比第一次稍微有点进步。依旧秉承着集中功能减少代码量的思想,在电梯类里的run函数承担了多个责任,有负责刷新,有返回时间的,还有记录要输出的时间的,真的给调试带来了很大困扰,经常不是多了1就是少了1,在长测试中更明显。还有就是一些特殊的同质请求由于这个设计不能被完全考虑。感觉整体设计基本满足老师提出的要求。

在测试中出现的bug有:个别同质请求的错误判断;还有一个在提交前突然想到的应该报错的地方,急急忙忙改的也没好好测,导致其他情况下也报错。互测中并没有发现对面同学的问题,并且很佩服一个main写到底还没有任何错误的面向过程编程。

作业3——ALS电梯


其实在第二次作业就猜到了这次会写有捎带功能的电梯,本以为这是个很轻松的事,可是在看了指导书后,又一次怀疑人生。吸取之前的教训,我边看指导书边用记事本记下来可能会忽略的细节,这些往往是公测的某个点,已经不止一次的因为这种原因出错。

第一次OO总结

第一次OO总结

这个程序可以说是一个极限操作,高估了自己的代码能力,导致情况覆盖的不全面,以及最后都没精力应用上新增的要求。整体的设计和第一次电梯变化不大,其实是有很多可以继承的地方,就是不太熟悉用法,也着急让程序跑起来没有加上。这次作业很认真的命名,也尽可能的拆分函数,减少传参的次数。尽管debug依然很困难,通过函数的调整,也没那么痛苦了。

出现的bug有:crash,这完全是因为debug的时候注释掉了try catch,最后忘记恢复了;还有就是个别捎带情况,可能设计的时候考虑不太全面,也没有做好测试,这个应该是要在电梯类里进行添加的。测试的同学出现的问题是在稍微长一点的测试中时间输出不太对,这可能是捎带的优先级出现了问题,没有仔细阅读指导书里对于捎带的定义。

结语


先要感谢不离不弃的大佬们!!也希望读到这里的大佬们轻喷!(并且希望老师不要批评我)我觉得评价自己的作业是跟正确程度有关,但绝不仅仅是看错了几个点这么草率,对于我而言,能自己硬着头皮写下来,从一个不能运行的程序调整到一个会出小错的程序,已经是史诗级的进步了。在接下来的多线程作业里,可能需要积极的请教别的同学,也不要拖延症太厉害,更要相信自己。同时在第一篇博客里立个flag:不要心态爆炸,努力建立一个好的编程思想,培养自己优秀的编程习惯,虽说这些应该在大一就完成。由于能力有限,在分析自己程序的问题上不够深刻,也对于一些错误比较能容忍,还是要结合个人情况吧,总之坚持到最后就好!祝大家睡个好觉,梦里没有OO!

上一篇:Unity 继承MonoBehaviour脚本 执行顺序 详解


下一篇:JS中的async/await的执行顺序详解