OO第一单元总结

一、基于度量来分析自己的程序结构

第一次作业

第一次作业的思路很简单,在读入后使用正则表达式判断输入是否合法,并进行简化,之后使用group方法提取出每一项进行处理后加入Arraylist中,最后合并输出即可。

第二次作业

第二次作业加入了三角函数,由于第一次作业思路偏向于面向过程的设计思路,所以第二次作业我选择了重构,并使用了继承。对于输入的处理,一样是先判断是否合法,然后再-+运算符前加一个“ ”,之后用split方法分开就得到了表达式的每一项,由于任何一个项都可以写成a*x^b*sin(x)^c*cos(x)^d,所以我实现了一个对这种形式的求导方法,同样将结果放入Arraylist中后进行合并,最后通过正则表达式优化输出。

 

第三次作业

第三次作业在第二次作业的基础上加入了接口,并改变了求导方式,使用了递归求导对于一个输入先去除掉外层的括号,然后寻找连接表达式的+-,调用Plus类,这样输入就被分为两个部分,知道没有可以分的-+连接后就去寻找*,找到后调用Multipy类,就这样输入就被分解为一个个最基本的类型。但是这样做就会产生非常多的括号,给优化带来困难。

二、分析BUG

第一次作业比较简单,bug出现在没有判断是否有一行输入。

第二次作业问题出在format的判断与使用正则优化输出时没有考虑到删去的1*的1可能时指数上的1。

第三次作业的bug是结果的表达式上有可能出现指数

三、发现别人程序bug所采用的策略

自己先根据自己写代码过程中出现的问题构造基础的测试集对其他人进行测试,如果没有发现bug,就只能去阅读代码,理解别人的思路,重点放在调用求导接口之前的处理和优化可能带来的错误。

总结

第一单元的内容主要是字符串的处理,一个难点是判断输入是否合法,第一次作业使用正则表达式还比较好用,但随着输入的复杂,难以写出一个好用的长正则。另一个难点是如何优化输出,而又不引入新的bug。经过第一单元的学习,对java有了一个初步的认识,熟悉了语言常用的类的使用。但是任然存在复杂条件判断、优雅的正则表达式、适合的数据结构的使用等方面还有许多问题,希望能在今后的实践与学习中对Java面向对象编程有更深的理解,写出更漂亮的代码。

转载于:https://www.cnblogs.com/lanan/p/10600863.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值