2020北航OO补给站总结

一、未完成作业

春季学期中,未通过的作业是第一单元第三次作业。

现在回想一下,当时感到棘手的部分,即未完成的原因主要有两点:

  1. 对于输入的嵌套表达式,没有很好的办法处理判断WF并提取因子。
  2. 当时的设计架构中,缺少一个重要的类——复合函数类(嵌套)。当时我的想法是将嵌套函数的内层函数当作外层函数类的一个属性来存储,结果导致结构有些混乱,而且多层嵌套时极为复杂。

二、改进的部分

经过课上老师的讲解和查阅资料,我在暑期学期对第一单元第三次作业进行了重构,效果不错。

重构中对当时的两个困难部分进行了针对性的改进:

  1. 针对输入的嵌套表达式提取问题,我查阅资料后学习了递归下降分析法。这个方法原本是用于文法分析,但是我发现用于本次作业也十分适合。因为指导书给出了表达式的形式化表述,所以可以很方便的根据形式化表述(和文法格式很像)构造出整个输入分析函数。

    递归下降分析法的中心思想,我理解就是遇到什么调用什么函数。因此,根据形式化表述,例如一个表达式只可能由项或者表达式构成,那么读取表达式时只需要找到一个项就调用读取项的函数即可,层层分解,思路比较清晰。

  2. 针对架构混乱的问题,在春季学期的第一单元总结课后我就有了初步的解决方案,在参考了公开的示例代码的架构后,我就发现了我自己缺少一个复合函数类的问题。因此在重构后,我加入了一个新的复合函数类(Recursive类),这样整个结构一下清晰了很多,也方便之后的求导等方法的书写。

三、进步和收获

最大的收获肯定是自己亲手完成了曾经困扰了我许久的这次作业。

在暑期课程中,我也第一次有了充足的时间进行了第一次重构,体验良好hhh。看来以后真的要多多重构了(迫不得已的话)。

这期间我也学习到了递归下降的方法,并且感悟了本应在春季学期第一单元结束就感受到的层次化模块化设计(当时没感受到看来时程序写的不好qaq)。

在暑期课上,老师通过会议也耐心细致地分析了我所讲解的程序,并提出了宝贵的意见,比如化简思路等各个方面。

四、建议

本人认为补给站的整体流程和形式已经相当完善,给参加暑期课的同学体验也十分良好。老师们依旧十分耐心地进行讲解和答疑,没有让同学们有任何的压力。

如果非要提出些什么改进建议,本人认为补给站可以将一个人的讲解分成两次(每次时间变短),第一次先讲架构设计(顶层规划),第二次讲代码、算法等底层实现,这样也许可以帮助还没有深入理解层次化设计的同学,更好的完成作业,因为老师可以在第一次讲解后提出架构建议,帮助同学规划设计。

五、心得体会

在暑期课程中,我确实在很大程度上提高了我自己对面向对象设计思想的理解,尤其是看到一个类对于整体架构的巨大作用。同时这期间我也学习到了很多新东西,比如递归下降等。所以,补给站期间也让我学到了很多,我也很感谢是补给站给了我这样一个机会。

对于进入补给站,我也很清楚是自己不好的行为,而这不好的行为也是我自己的心态问题导致。所以我想我从补给站这一个事情发现了我自己这样一个心态问题上的缺点,也是要感谢补给站和各位老师助教。提前发现总归是好的,这样我及时改正也就可以在后面避免更严重的问题。这样的一课,想必是超越知识本身之外的收获吧~

最后,向在暑假期间还耐心辅导我们的老师和助教们表示感谢!

posted @ 2020-08-19 13:17  boocrown  阅读(310)  评论(0编辑  收藏  举报