OO前三次作业总结

OO前三次作业总结

OO前三次的求导作业,难度为阶梯式递增,不过之前没有太深刻的学习过Java,因此对面向对象的思想还没有完全建立,还是很“面向过程”,但是在这个学习练习的过程中,对面向对象的理解也更为深刻。

一、基于度量分析程序结构

经查阅知,ev(G)基本复杂度用来衡量程序非结构化程度;Iv(G)模块设计复杂度是用来衡量模块判定结构,即模块和其他模块的调用关系;v(G)是用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数。而由后续截图结果可见,尤其第一次的程序结构非常不好,代码不易于调试和维护。在面向对象的思维中,应将类划分清楚,不应过大或过细才好,且应降低模块耦合度,以便隔离和维护代码。

 

二、思路

第一次作业

没有运用到继承的思想,只有一个Item类,属性是x的系数和指数。分离读入然后进行求导及输出操作。

第二次作业

共分Factor、Item、Poly三大类,即因子、单项式、多项式三类。其中Factor作为父类,有三个子类,分别是幂类Mifactor,sin类Sinfactor和cos类Cosfactor。

将求导细化,用正则表达式匹配出每一个因子,再对其求导得单项式,然后对单项式求导得多项式,再对多项式求导得结果(其实就是合并)。

第三次作业

应用递归匹配最小因子,再进行求导。

三、自我bug分析

第一次作业bug

1.由于分析的不够到位,在正则表达式的表达中出错,会在符号(+-)后跟空格的情况下将符号单独匹配出来,而导致极其严重的错误。由于当时对java函数的了解十分不充足,没有想到用replaceAll()函数,可在判断完语法错误后将字符串中空格用""替换掉(也就是消去),这样后续正则表达式的书写和匹配都会简化很多。

2.没有考虑到\f\v的非法情况

第二次作业bug

1.中测时发现了+++1此种表达式为合法,返回再次研读指导书并与同学讨论,增加了此种类型的合法判断。

2.强测时挂了三个数据点……发现自己又是在正则表达式中出现错误。表达式中忽略了因子(Factor)匹配时带负号的情况,导致此种全部输出了Wrong Format。

3.不合法表达式的正则表达式漏掉了sin三个字母中两处都有空格的情况。思考不够细致。

第三次作业bug

在递归时思路不够清晰即已出现错误。

四、他人bug分析

1.会用自己在自测时测爆自己的边界数据点进行测试,可能会发现他人与曾经的自己犯下了相同的错误。

2.分析他人代码,寻找不完备的地方进行数据构造

(用脚本跑数据的方法还不是很会orz)

五、Applying Creational Pattern

写之前一定要充分思考、捋顺之后再开始写代码,否则会应对层次理解划分的不够清楚而导致难以修改,而不得不推翻重写,费时费力。再如对父类的继承,父类需要的属性,子类需要增加的方法,等等,一定要弄清楚。同时,建议边写边开着checkstyle规范写作,以免后期难以修改。希望今后能加快理解、写代码和调代码。

转载于:https://www.cnblogs.com/lujubei/p/10609884.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值