• 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的方法也要在之后逐渐体会。

  • 相关阅读:
    模块化工具require 学习笔记
    学习Jade模板引擎
    通过border来实现各种三角符号
    使用vscode 编译 sass
    Javascript 运行机制
    Vue调试工具 vue-devtools
    MVVM框架
    通信类
    面向对象
    原型和原型链
  • 原文地址:https://www.cnblogs.com/dzcq0239/p/12541995.html
Copyright © 2020-2023  润新知