标签:cos 设计 面向对象的思想 基本 基于 出现 第一个 acea 求导
第一次
目标比较简单,只需要提取系数和指数,便可以运用公式求导,只需在额外读入表达式时把省略的指数和系数给补气便可以。基本实现了高内聚低耦合的目标。
第二次
第二次加入了sin(x)和cos(x),导致正则表达式的复杂度大幅上升。应当在之后的设计中思考如何降低耦合性。
第三次未能按时提交。。。
第一次作业在强测和互测中未发现bug;
第二次修复了在强测和互测后修复了两类bug:
I) 强测时非法字符\\v未识别并报错;
II) 互测时-sin(x),-cos(x)不能正确求导。
第一个bug出现的原因是我在读入表达式后格式化时直接采取了replaceAll(“\\s+”,“”) 的操作导致错误地清除了所有不合法的空白字符,解决方法是修改替换语句为 replaceAll(“[\\t ]”,“”)。
第二个bug出现的原因是我在读入表达式后格式化时将 -sin(x) 替换为 -1*cin(x) , -cos(x)替换为 -1*sos(x)的低级错误,而在后来的本地测试中并未发现,导致互测过程中被吊起来锤。
以上两个bug均在格式化时产生。我认为出现的原因是我个人对前期处理的各个情况思考不够充分,将主要精力放在了求导计算的过程中。这正符合了bug的28定律。
主要的方法采用的策略是鸟枪法,通过手动构造涵盖大量边界条件的样例进行互测。
工厂模式也是这周新学习的知识点,可以思考幂函数,三角函数和常数函数之间的共性,利用工厂模式来进行项的构造,求导,合并等。
这三周的作业在我还没摆脱面向过程的思想时,让我接触到面向对象的思想。感觉比较痛苦,缺乏拓展和复用的意识导致三次作业,三次重构。在接下来的作业中,面向对象、复用和拓展的思想应当在我刚开始设计的时候就考虑到,工厂模式,TDD的方法也要在之后逐渐体会。
标签:cos 设计 面向对象的思想 基本 基于 出现 第一个 acea 求导
原文地址:https://www.cnblogs.com/dzcq0239/p/12541995.html