2020-OO-总结1-18182658

  • (1)基于度量来分析自己的程序结构;

    第一次

    目标比较简单,只需要提取系数和指数,便可以运用公式求导,只需在额外读入表达式时把省略的指数和系数给补气便可以。基本实现了高内聚低耦合的目标。

 

    第二次

    第二次加入了sin(x)和cos(x),导致正则表达式的复杂度大幅上升。应当在之后的设计中思考如何降低耦合性。

    第三次未能按时提交。。。

 

 

  • (2)分析自己程序的bug;

  第一次作业在强测和互测中未发现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定律。

  • (3)分析自己发现别人程序bug所采用的策略;

    主要的方法采用的策略是鸟枪法,通过手动构造涵盖大量边界条件的样例进行互测。

  • (4)应用对象创建模式来重构;

    工厂模式也是这周新学习的知识点,可以思考幂函数,三角函数和常数函数之间的共性,利用工厂模式来进行项的构造,求导,合并等。

  • (5)对比和心得体会。

    这三周的作业在我还没摆脱面向过程的思想时,让我接触到面向对象的思想。感觉比较痛苦,缺乏拓展和复用的意识导致三次作业,三次重构。在接下来的作业中,面向对象、复用和拓展的思想应当在我刚开始设计的时候就考虑到,工厂模式,TDD的方法也要在之后逐渐体会。

posted on 2020-03-21 20:38  dzcq  阅读(179)  评论(0编辑  收藏  举报