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

前三次作业的度量分析及类图

第一次作业

第二次作业

第三次作业

由上可见,三次作业中,我的代码中都存在一些较为复杂的方法,这些方法大多是整个程序核心逻辑的部分。在将来的作业中我也将考虑如何减少核心代码的耦合度。

关于Bug

自己的程序

前三次作业中,非常幸运的是我的程序都没有被挑出bug。尽管我自己也对自己的程序进行了完整且花样繁多的测试,但这并不能完全说明程序中完全不存在bug(虽然我觉得我的程序是bug-free了)。因此在这里我打算谈一谈自己debug的感受。

前几次作业当中,我在作业中花费时间最长的就是debug以及寻找潜在的bug。我测试的步骤一般按照

  • 分支树
  • 简单的功能测试
  • 复杂一些的功能测试
  • 边界测试以及暴力测试

来进行。其中一般问题出现在复杂功能测试以及边界测试中。对于复杂的功能测试,找到bug的要点是构造一些足够特殊的样例。例如第三次作业中同层捎带多次的问题。除此之外还可以构造一些较长的功能测试样例,例如让电梯反复上下行,以此检查出潜在的问题。边界测试部分让我印象深刻的是第一次作业中的表达式,虽然我已反复确认正则表达式的逻辑没有问题,但由于正则表达式一次匹配过长,导致对于很长的表达式出现爆栈情况,这一点在之后使用正则表达式过程中都有注意。

别人的程序

这三次作业我拿到的互测样例中或多或少都有一些bug。我寻找bug基本也按照了测试自己程序的步骤,但在测试过程中也会通过注意对方代码中存在的缺陷来构造测试样例。印象最深刻的是第一次作业中的我拿到的互测程序,由于其使用数组以及简单的排序来管理整个表达式,输出前将数组按指数从大到小排序,但输出时判断空多项式的逻辑有误,导致输出错误。这样的缺陷通过测试样例寻找,效率并不如直接阅读代码来得快。因此在后续测试过程中我也会仔细注意对方的代码。

代码规范真的很重要,希望大家尽量少用诸如temp1,temp2这样的变量名来编写程序,也尽量多写注释,自己看着舒服,测试的同学看着也舒服

感想

前三周的作业还是有惊无险的度过了,但我认为自己的代码仍有改进的空间。首先是可以进一步降低耦合度,其次是代码可以再写的可读性更高一些。当然这些改进措施的前提是需要有充足的时间,而不是赶ddl。虽然在研究一段指导书之后(看完大佬们讨论后)再开始编程效率更高,我仍希望以后的作业我可以尽早开始尽早完成,也希望指导书可以更加明确。

OO第一次阶段性总结的更多相关文章

  1. OO第一次作业总结

    OO第一次学习总结 1.第一次作业:多项式加法 从未接触过java的我,在从输入输出开始学了几天后,按照C语言的思路,写出了一个与面向过程极其接近的程序. 在这个程序中,存在两个类:一个是Comput ...

  2. OO第一次博客作业

    OO第一次博客作业 一.三次作业的bug反省 1.自己发现别人的问题 (1)输入处理的问题,比如第一次作业,主要就是处理输入的字符串,然后有同学的正则表达式有问题,则对于一些错误输入就不能正确判断. ...

  3. oo 第一次博客作业

    oo 第一次博客作业 早在大一就听说了oo的各种传奇故事,大二下学期终于也开始了我的oo之旅. 基于度量来分析自己的程序结构 第一次作业 类图分析 耦合度分析 可以看出在第一次作业中,我的耦合度非常高 ...

  4. OO第一次单元总结

    第一次总结性博客 16071070 陈泽寅 2019.3.23 一.第一单元所学总结 首先先来总结一下第一单元我所学到的知识以及所感所悟.第一个单元,是我第一次接触JAVA语言,并且再使用了几次之后, ...

  5. OO第一次博客作业--第一单元总结

    OO第一单元总结 面向对象设计与构造的第一单元,对“面向对象”的概念还根本不理解不熟悉,只觉得需要“分模块”,但不知道怎么分,分多少模块,怎么根据需要的模块的功能建立类.学习的进度又太慢,根本跟不上出 ...

  6. OO第一次博客

    过去的三周里我们完成了表达式求导的程序设计与构造.表达式求导程序,大致思路是实现一个表达式类,支持表达式的输入.求导运算和输出功能.可能的话,还可以增加表达式的化简方法,从而得到更高质量的输出结果.总 ...

  7. oo第一次作业

    前言: 这是一篇面向对象作业总结,作业内容是对多项式进行求导,一共有三个阶段,具体要求不详述,第一阶段只要求’+’连接coeff*x^pow的形式,第二次支持*连接的幂函数及三角函数,第三次则需要支持 ...

  8. OO第一次博客总结

    虽然早在开学之前就已耳闻过OO这门课的威力,也在寒假自学了一些java的语法,但在真正面对OO这样的工程训练时才发现寒假所学的那点语法简直不值一提,也深刻的感受到在这个过程中自己的提升确实很快,毕竟d ...

  9. 2018 OO第一次总结(作业1-3)

    第一次作业1.程序分析 (1)OO度量 (2)类图: (3)分析与评价: 这次作业由于作业整体设计难度不大,因此按照去年暑假上的OO先导课老师讲的设计方法很容易实现一个还不错的面向对象式程序,类与类之 ...

随机推荐

  1. 20.1章JSON语法

    1,语法 JSON有三种类型的值 简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串,数值,布尔值,null.但是JSON不支持JavaScript中特殊的值undefined. ...

  2. Maven错误信息:Missing artifact jdk.tools:jdk.tools:jar:1.6

    在pom.xml中添加依赖: <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.too ...

  3. jQuary学习の三の效果展示

    一.隐藏显示 1.$(selector).hide(speed,callback);2.$(selector).show(speed,callback); 可选的 speed 参数规定隐藏/显示的速度 ...

  4. Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

    1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

  5. 设计模式——中介者模式/调停者模式(C++实现)

    #include <iostream> #include <string> using namespace std; class Colleague; class Mediat ...

  6. Zookeeper技术分享

    内容整理自组内分享PPT 一.概述 ZooKeeper 遵循一个简单的客户端-服务器模型,其中客户端 是使用服务的节点(即机器),而服务器 是提供服务的节点.ZooKeeper 服务器的集合形成了一个 ...

  7. GEETEST极验召集互联网大佬齐聚光谷,共同探讨交互安全问题

    全球互联网技术在飞速发展的同时,网络安全事件也随之频发.除了直接带来经济损失的网络恶意攻击之外,企业在多个方面也遭受着不同程度的网络恶意攻击,包括品牌形象.管理时间.企业竞争力.客户成交量.用户行为等 ...

  8. MySQL聚集索引和非聚集索引

    索引分为聚集索引和非聚集索引,mysql中不同的存储引擎对索引的底层实现可能会不同,这里只关注mysql的默认存储引擎InnoDB. 利用下面的命令可以查看默认的存储引擎 show variables ...

  9. svn打分支

    http://www.07net01.com/linux/Eclipsexiasvndechuangjianfenzhi_hebing_qiehuanshiyong_548928_1374750252 ...

  10. 浅谈TCP三次握手和四次挥手

    学习三次握手和四次挥手前,先了解下几个基础的概念. Seq:数据段序号,我们都知道TCP是提供有序传输的,有序传输的基础就是数据段序号,接收方在收到发送方乱序包的情况下可以根据Seq进行重新排序,确保 ...