1第一次作业
1.1题目描述
对形如4*x+x^2+x的多项式求导。
1.2类图
1.3度量分析
在完成第一次作业时,我的写法没有特别的“面向对象”。唯一封装起来的是Node,代表多项式的一个项。PolyDerivation是一个方法庞杂的类,先判断输入是否合法,再将多项式拆分成独立的项,接着求导,同时也包含了程序的入口main。这无疑是一个面向方法的写法。
写valid方法判断合法性的时候,经历过一次波折。一开始的思路是用一个很长的大正则表示出整个多项式,写完发现超过了100个字符,很不美观。而且如果表达式的项数过多,递归层数太深会爆栈。然后我换了一种思路,正则每次只匹配一个项,而项又可以根据x有没有系数和指数分为5类,所以我一共写了5种很短的正则分别匹配5种项。
但是我有一个地方多此一举了。就是用parsePoly和parseOp两个方法分别取得独立的项和他们之前的符号。其实连接各个项的符号可以归并到每个项里。
1.4BUG分析
我公测和互测阶段都没有bug。其实提交之前,我改了很多自己的bug。比如优化之后&