第一次做业:正则表达式
由于初次接触面向对象编程还不熟悉,因此第一次做业采起了面向过程式的编程方法,将全部代码写在了一个类里。虽然基本完成了要求,可是圈复杂度太高,说明程序代码质量较低,难以测试和维护。算法
我第一次做业的总体思路就是直接将整个多项式用一个超长的正则表达式来匹配,这样能够从在开始时就过滤掉不少不正确的输入格式。可是我没有仔细阅读指导书,致使多项式相减得0等边界状况没有考虑到,未经过公测。编程
我用公测的样例取边界数据测试匹配到的同窗,没有发现bug。多线程
第二次做业:函数
第二次做业由于本身蠢的缘由到了截止时间没有提交上去,变成了无效做业。虽然是无效做业,可是仍是得找出本身的不足。此次的程序块嵌套很高,一段时间以后本身看都以为头晕。应该在写以前组织好总体的思路,不要想到哪里就写到哪里,致使容易出现各类各样的错误,又很差修改。学习
此次的傻瓜电梯程序虽然名叫傻瓜,但是也比我强一些,我没有考虑全同质请求的各类状况,致使写出来的电梯比傻瓜还要差点。由于无效做业,我有点回避此次的程序,致使bug也没有彻底修改好,也变相提升了以后做业的难度。测试
第三次做业:线程
第三次做业能够说是前两次做业的综合——但倒是缺陷的综合。此次既有圈复杂度太高,又有块嵌套过深,能够说是好的没学,坏的都学会了。此次的做业对于我来讲难度提升了一个档次,捎带请求的处理让我想了好一阵子,结果到最后仍是只能完成一小部分样例的正常输出。缘由有第二次无效的影响,可是主要仍是本身的水平不够。此次也由于各类要求慌了阵脚,致使与第二次做业相比甚至有些倒退。能够说完成度不高。我以后会继续修改调试。debug
此次也检查了匹配到的同窗的程序,但是除了公共样例外基本没有什么错误。我想我须要提升本身的测试能力,这样对本身也算是十分有好处。设计
心得体会:
快没时间的时候要把写好了的程序先交上去,再考虑细枝末节。
对于函数复杂度太高的状况要尽可能下降。方法有提炼函数、替换算法、分节条件表达式、合并条件式、合并重复的条件片断、移除控制标志、将查询函数和修改函数分离、令函数携带参数、以明确函数取代参数。
而面对过深的嵌套时,应该减小嵌套层数。条件判断的代码块不要跨度太大,相隔太远. 经过就近处理各类状况来增长可读性.同时当你的循环和分支超过 2 层时考虑重构.还要考虑将嵌套的逻辑分为独立的函数。好比, 若是你在一个循环中对一些对象进行处理, 这其中的每一个对象都包含一个列表 (好比一个有着重复字段的协议缓冲区), 那么你能够定义一个函数来处理这里面的每一个对象,而不是使用一个两层的嵌套循环.
通过了三次做业的洗礼,我以为仍是要多花时间在总体的思路和设计方面。只要可以把一种可行的方案彻底构思出来,写程序就会明确的多,也简单得多。我如今所欠缺的就是这种大局观,在动手以前,必定要多动脑,有一个目标。我以前的这种写到哪是哪的想法必定要舍弃。还有就是本身对待做业的态度。要对做业多上心,不会的多去问,多去学习,提升本身的水平。立刻就要迎来多线程电梯的做业,在第三次做业上更进一步。老师助教都说此次是个不小的挑战,我也已经准备好了面对它。还有重要的就是要努力提升本身的测试和debug能力,让本身写出来程序先要完成全部的基本要求,而后再在各个方面加以完善改进。