(1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高,可扩展性不强,还学不到什么东西。因此在这里立一个flag,下次作业必好好构造。由于都是一个类,UML就不上丢人现眼了。
(2)第二次作业的bug点在于我的优化,我对我的表达式的优化方法是求导后在String类中将^1,1*,0等替换掉,0是好办的,但是^1,和1*有些麻烦,我一开始想用String自带的replaceall方法,但是发现这样会把类似于x^122改成x22,发现这一点后我便在求导的过程中将所有的1(就真的是1),改为1q,这样我再在后面把所有的1q替换掉就好了,但是我只把1q*和^1q替换掉了,像+1这样的数据就会输出+1q,这就是bug点所在,所以我在修复bug时把这一部分替换成+(-)1就完成了;第二个bug是我当时误以为制表符等于四个空格,于是没有对制表符进行处理导致出现制表符代码会崩溃,于是在一开始的判断时加入了制表符,合法的话就把他替换掉,成功修复了所有bug。第三次作业的bud点发生在求导的时候,由于表达式很长,我是先用+-号分开各个表达式,然后在每一个表达式里再用*号分开,但是这样有一个问题就是像x*+2求导应该是1,但是由于+号分开,导致求导是1甚至崩溃,所以在改进的时候我在+-号分开后去判断是不是*后面的+-或者^后面的加减,修复了这个bug;还有一个bug是我在求导时如果一个表达式是一堆const连乘,我输出的时候会多一个加号,于是我在求导部分特判了这种情况,修复了所有的bug。
(3)来说一下我互测hack别人时的策略吧。由于转专业的情况,第一次作业没有参加互测,所以在第二次互测时,我还真的认真看了别人的代码,先从她的正则开始看,然后就是求导部分对指数系数的求导是否正确,再去试一下数据,这也导致我在第二次的时候hack效率低下;到了第三次,我跟大佬们学习了对拍技术,直接上对拍器,但是不是盲目对拍,拍出的数据我先分析她的问题出在哪里,去除一些同质的bug,再将麻烦的数据简化,提交上去,使得我尽管在A组还是有四次hack入账。还是希望大家在对拍出bug后不要太激动,先看一看,同质的bughack一两次差不多了,你hack太多也没什么意义,人家一次更改就过了,而且还让被hack的人心烦,何必呢?
(4)三次作业我最多用了两个类,说实话还没有掌握面向对象的思想和方法,大多数代码还是在用面向过程(c语言打法)来写,自己也感觉这样会有些问题,于是在前两天学了继承接口等等概念,至于重构什么的我打算在第五次作业开始时好好构思,把面向对象的思想用好,写出像java的代码,真正的学到知识。