OO第一次阶段性总结
经过三次作业的历练之后终于来到了写博客这一周。回顾开学来的这一个月,令我印象最深刻也是最累的一门课就是OO了。虽然上学期学过一部分Java,但这学期开学就来的OO作业还是让我在第二周就开始熬夜了。不过虽然这几次作业相比于其他几门课在开学这一阶段的进度来说感觉很紧张,但是我从中学到的知识以及代码技巧也很多(给别人挑bug也熟练起来了(狗头))。
前三次作业的度量分析及类图
第一次作业


第二次作业


第三次作业


由上可见,三次作业中,我的代码中都存在一些较为复杂的方法,这些方法大多是整个程序核心逻辑的部分。在将来的作业中我也将考虑如何减少核心代码的耦合度。
关于Bug
自己的程序
前三次作业中,非常幸运的是我的程序都没有被挑出bug。尽管我自己也对自己的程序进行了完整且花样繁多的测试,但这并不能完全说明程序中完全不存在bug(虽然我觉得我的程序是bug-free了)。因此在这里我打算谈一谈自己debug的感受。
前几次作业当中,我在作业中花费时间最长的就是debug以及寻找潜在的bug。我测试的步骤一般按照
- 分支树
- 简单的功能测试
- 复杂一些的功能测试
- 边界测试以及暴力测试
来进行。其中一般问题出现在复杂功能测试以及边界测试中。对于复杂的功能测试,找到bug的要点是构造一些足够特殊的样例。例如第三次作业中同层捎带多次的问题。除此之外还可以构造一些较长的功能测试样例,例如让电梯反复上下行,以此检查出潜在的问题。边界测试部分让我印象深刻的是第一次作业中的表达式,虽然我已反复确认正则表达式的逻辑没有问题,但由于正则表达式一次匹配过长,导致对于很长的表达式出现爆栈情况,这一点在之后使用正则表达式过程中都有注意。
别人的程序
这三次作业我拿到的互测样例中或多或少都有一些bug。我寻找bug基本也按照了测试自己程序的步骤,但在测试过程中也会通过注意对方代码中存在的缺陷来构造测试样例。印象最深刻的是第一次作业中的我拿到的互测程序,由于其使用数组以及简单的排序来管理整个表达式,输出前将数组按指数从大到小排序,但输出时判断空多项式的逻辑有误,导致输出错误。这样的缺陷通过测试样例寻找,效率并不如直接阅读代码来得快。因此在后续测试过程中我也会仔细注意对方的代码。
代码规范真的很重要,希望大家尽量少用诸如temp1,temp2这样的变量名来编写程序,也尽量多写注释,自己看着舒服,测试的同学看着也舒服
感想
前三周的作业还是有惊无险的度过了,但我认为自己的代码仍有改进的空间。首先是可以进一步降低耦合度,其次是代码可以再写的可读性更高一些。当然这些改进措施的前提是需要有充足的时间,而不是赶ddl。虽然在研究一段指导书之后(看完大佬们讨论后)再开始编程效率更高,我仍希望以后的作业我可以尽早开始尽早完成,也希望指导书可以更加明确。
OO第一次阶段性总结的更多相关文章
- OO第一次作业总结
OO第一次学习总结 1.第一次作业:多项式加法 从未接触过java的我,在从输入输出开始学了几天后,按照C语言的思路,写出了一个与面向过程极其接近的程序. 在这个程序中,存在两个类:一个是Comput ...
- OO第一次博客作业
OO第一次博客作业 一.三次作业的bug反省 1.自己发现别人的问题 (1)输入处理的问题,比如第一次作业,主要就是处理输入的字符串,然后有同学的正则表达式有问题,则对于一些错误输入就不能正确判断. ...
- oo 第一次博客作业
oo 第一次博客作业 早在大一就听说了oo的各种传奇故事,大二下学期终于也开始了我的oo之旅. 基于度量来分析自己的程序结构 第一次作业 类图分析 耦合度分析 可以看出在第一次作业中,我的耦合度非常高 ...
- OO第一次单元总结
第一次总结性博客 16071070 陈泽寅 2019.3.23 一.第一单元所学总结 首先先来总结一下第一单元我所学到的知识以及所感所悟.第一个单元,是我第一次接触JAVA语言,并且再使用了几次之后, ...
- OO第一次博客作业--第一单元总结
OO第一单元总结 面向对象设计与构造的第一单元,对“面向对象”的概念还根本不理解不熟悉,只觉得需要“分模块”,但不知道怎么分,分多少模块,怎么根据需要的模块的功能建立类.学习的进度又太慢,根本跟不上出 ...
- OO第一次博客
过去的三周里我们完成了表达式求导的程序设计与构造.表达式求导程序,大致思路是实现一个表达式类,支持表达式的输入.求导运算和输出功能.可能的话,还可以增加表达式的化简方法,从而得到更高质量的输出结果.总 ...
- oo第一次作业
前言: 这是一篇面向对象作业总结,作业内容是对多项式进行求导,一共有三个阶段,具体要求不详述,第一阶段只要求’+’连接coeff*x^pow的形式,第二次支持*连接的幂函数及三角函数,第三次则需要支持 ...
- OO第一次博客总结
虽然早在开学之前就已耳闻过OO这门课的威力,也在寒假自学了一些java的语法,但在真正面对OO这样的工程训练时才发现寒假所学的那点语法简直不值一提,也深刻的感受到在这个过程中自己的提升确实很快,毕竟d ...
- 2018 OO第一次总结(作业1-3)
第一次作业1.程序分析 (1)OO度量 (2)类图: (3)分析与评价: 这次作业由于作业整体设计难度不大,因此按照去年暑假上的OO先导课老师讲的设计方法很容易实现一个还不错的面向对象式程序,类与类之 ...
随机推荐
- [BZOJ1070] [SCOI2007] 修车 (费用流 & 动态加边)
Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使 ...
- XCTF(77777-2)
题目链接:http://47.52.137.90:20000 这道题目和前面的那道题目大致一样,只不过是过滤的函数不一样 检查过滤函数的方式就不写了,直接来解题 检查函数发现过滤了ord ascii ...
- 【MyBatis源码分析】Configuration加载(下篇)
元素设置 继续MyBatis的Configuration加载源码分析: private void parseConfiguration(XNode root) { try { Properties s ...
- 关于Videodownload helper的下载问题
Videodownload helper是火狐浏览器的一个视频音频嗅探插件, 解压文件的时候处于解压状态还没有解压完的时候不能关闭原来的窗口 所以这个下载软件也同理.没有下载完一个视频之前不能把这个窗 ...
- zabbix添加自定义监控项
zabbix添加自定义监控项 author:headsen chen 2017-10-16 17:23:17 个人原创,转载请注明作者,出处,否则依法追究法律责任 主机端配置: 首先安装好za ...
- python全栈开发-Day5 集合
python全栈开发-Day5 集合 一.首先按照以下几个点展开对集合的学习 #一:基本使用 1 .用途 2 .定义方式 3 .常用操作+内置的方法 #二:该类型总结 1. 存一个值or存多个值 只能 ...
- VMware静态地址上网
虚拟机通过dhcp获取ip,当系统重启时可能导致ip变更,出现不必要的麻烦,以下是通过nat模式设置虚拟机静态ip同时能够上网的方式. 编辑VMware,依次点击“编辑”--“虚拟网络编辑器” 注:为 ...
- 转:命令passwd报错因inode节点处理记录
命令passwd报错因inode节点处理记录 原文:http://blog.sina.com.cn/s/blog_506ed9e6010106kj.html 故障现象: 1.修改密码时报错 ...
- Tomcat使用基础
1.解压Tomcat压缩文件后需要在环境变量里配置 :TOMCAT_HOME:D:\apache-tomcat-8.0.35. 2.将打好的项目war包放到tomcat安装目录的webapps文件夹下 ...
- [POJ 3764] The xor-longest Path
Description 多组数据 给你一颗树, 然后求一条最长异或路径, 异或路径长度定义为两点间简单路径上所有边权的异或和. Solution 首先 dfs 一遍,求出所有的点到根节点(随便选一个) ...