代码改变世界

OO第一单元总结

2021-03-30 15:49  updragon  阅读(65)  评论(0)    收藏  举报

一、度量分析

第一次作业

对表达式字符串进行去除空白字符和合并相邻运算符后,利用正则表达式,识别出表达式的项(包括项前的运算连接符),项只有常数和幂函数两种因子,项可以用常数因子之积、幂函数指数之和表示,对其求导后,以指数为Key保存在Map里面,最后根据Map构造表达式导数。

 

第二次作业

本次作业进行了重构,不在使用正则表达式,而是利用递归下降分析,逐个读取字符,识别出项。Term类包含常数系数,幂函数指数,正弦函数指数,余弦函数指数,表达式因子列表和表达式因子导数列表等属性。在遇到表达式因子时,将其字符串保存在项的表达式因子列表,将其导数保存在表达式因子导数列表。然后依据乘法法则构造项的导数,连接构成表达式的导数。

 

第三次作业

首先利用递归下降分析进行格式判断,然后在第二次作业的基础上,把三角函数里的内容看作是表达式因子即可。

 

二、Bug分析

第一次作业:项的系数为0的情况,与前项之间没有添加连接符号,或者不应该输出该项

第二次作业:本次作业没有按时完成,主要是没想明白怎么处理嵌套问题,Bug修复时,利用递归下降分析重构了作业,没有出现Bug.

第三次作业:在利用乘法规则生成导数时,需要用到因子本身时,忘记给三角函数因子添加指数符号和指数

三、发现别人程序Bug所采用的策略

1、连续的空白字符、运算符号处理

2、同类项抵消导数为0的边界情况

3、多层嵌套的复杂数据

四、重构经历总结

第二次作业进行了重构,利用了递归下降分析,没有将因子拆分为单独的类,不够面向对象。而且求导都是以项为单位,直接返回字符串,不能进行优化。

五、心得体会

应该改掉面向过程的思想,管理好数据及其处理,提高代码的复用性,减少重构代码,学会运用良好的设计模式。