【面向对象】第一单元总结——表达式求导

基于度量的程序结构分析

第一次做业

类图

代码规模

代码度量

“ ev(G)基本复杂度是用来衡量程序非结构化程度的,非结构成分下降了程序的质量,增长了代码的维护难度,使程序难于理解。所以,基本复杂度高意味着非结构化程度高,难以模块化和维护。实际上,消除了一个错误有时会引发其余的错误。
  Iv(G)模块设计复杂度是用来衡量模块断定结构,即模块和其余模块的调用关系。软件模块设计复杂度高意味模块耦合度高,这将致使模块难于隔离、维护和复用。模块设计复杂度是从模块流程图中移去那些不包含调用子模块的断定和循环结构后得出的圈复杂度,所以模块设计复杂度不能大于圈复杂度,一般是远小于圈复杂度。
  v(G)是用来衡量一个模块断定结构的复杂程度,数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,经验代表,程序的可能错误和高的圈复杂度有着很大关系。”
——引用自《OO课程中IDEA相关插件的使用html

第二次做业

类图

代码规模

代码度量

第三次做业

类图

代码规模

代码度量



优势和缺点自我评价

个人优势是程序结构构架地比较清晰,方法功能独立,代码中注释写得较为明确;缺点是喜欢用较长的正则表达式,没有对最后的输出结果进行优化。正则表达式

分析本身程序的Bug

本身的程序能够较好地识别正确的,和有明显错误的输入内容,并正确地计算出结果。但遗憾的是对于一些非直观的,相对于真实计算情境下非正常思路的输入内容的识别力较差,好比+++2019这种类型的输入,我在设计上没有考虑到对这些状况的包容,或者说,对于这类输入的分析、解析没有较好的设计思路。编程

分析他人程序的Bug的策略

在本单元的程序设计中,我主要采用了如下两种方法去测试他人的程序:
· 根据本身在编程过程当中的思考和遇到的问题来对他人的程序进行测试。因为每一个人的解题思路和程序构建思路是不一样的,因此按照本身的程序逻辑流程能够解决的输入内容,不必定在他人的程序中也能够顺利解决。
· 我假定在进行下一阶段的测试时,他所基于的以前的阶段的代码都已经通过充分测试,全部的回归测试都能经过,也就是说,程序中最禁受不住测试的地方是他根据新要求,进行改编的新代码。那么我会针对本次做业中的新要求的各类表现形式对他人的程序进行测试。模块化

对象建立模式的应用

在本单元的三次做业中,我主要采用了工厂模式的对象建立方法。对Expression/Term/Factor的建立方法都是经过传入字符串,返回一个相应的对象去完成,其中FactorX/.Sin/.Cos/.Const继承于Factor父类。在方法调用上,他们对外的接口都基本只有.derivation() & .toString() 方法,分别返回他们加上括号的的导函数(String)和原始内容(String)。函数

相关文章
相关标签/搜索