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先导课老师讲的设计方法很容易实现一个还不错的面向对象式程序,类与类之 ...
随机推荐
- emacs配置
原配置 (global-set-key [f9] 'compile-file) (global-set-key [f10] 'gud-gdb) (global-set-key (kbd "C ...
- css块级元素和内联元素
左边的是块级元素block,右边内联inline. 修改方法 display: inline;
- Spring【DAO模块】就是这么简单
前言 上一篇Spring博文主要讲解了如何使用Spring来实现AOP编程,本博文主要讲解Spring的DAO模块对JDBC的支持,以及Spring对事务的控制... 对于JDBC而言,我们肯定不会陌 ...
- 关于jstl的使用
1.jsp中el表达式无法被解析 使用jstl标签的时候,发现el表达式无法被解析,后来查阅资料发现jsp中需要添加<%@page isELIgnored="false" % ...
- 两种插入排序算法java实现
两种方法都编译运行通过,可以当做排序类直接使用. 折半插入排序: public class Sort1 { public static void main(String[] args) { Inser ...
- 直播-srs起步
srs简介 https://github.com/ossrs/srs/wiki/v2_CN_Home 原料 CentOS Linux release 7.2.1511 (Core) ffmpe ...
- 【Unity与23种设计模式】适配器模式(Adapter)
GoF中定义: "将一个类的接口转换成为客户端期待的类接口.适配器模式让原本接口不兼容的类能一起合作." 适配器模式与装饰模式有一定的相似之处 两者都是在着手解决C#不能多继承的问 ...
- 鹅厂优文 | 决策树及ID3算法学习
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~. 作者:袁明凯|腾讯IEG测试开发工程师 决策树的基础概念 决策树是一种用树形结构来辅助行为研究.决策分析以及机器学习的方式,是机器学习中的 ...
- vue v-for输出表格结构
v-for输出表格结构 数据库结构如下: 原理: 两个数组 a, b, 数组a的值,是数组b的键(索引), 变量拼接(红色区域): <table> <tr> <th v ...
- pc端响应式-媒体查询
媒体查询(@media):能在不同的条件下使用不同的样式,使页面在不同在终端设备下达到不同的渲染效果 列举常用的pc屏幕宽度: 1024 1280 1366 1440 1680 1920 ...