zoukankan      html  css  js  c++  java
  • 初学面向对象

      第一次面向对象编程,还是没能控制住自己把OO第一次作业写成了面向过程的样子。现在我都不愿看那四五重if嵌套的

    代码......(简直惨不忍睹)

      当时把功能写全了自己测了几组小数据也没问题,后来用了某同学的20个含50项的多项式发现只用一次正则匹配不行,会爆栈。后来我改成了两次匹配(不过没有限制输入字符串的长度),就没啥问题了。公测都过了,但互测的时候还是被找出了bug,没错压力测试使它爆栈了,说到底还是自己没测全,以及对正则表达式的匹配理解不够深入(盯着代码看半天觉得这么写完船OK啊,所以被爆栈的瞬间我是震惊的)。

      第一次作业代码度量:

    (悄悄放一张类图就跑 滑稽.jpg)

       与第一次作业相比,第二次作业难度明显已经不在一个level了,我逐渐开始学习“面向对象”编程。刚看到题目要求的时候我是无比嫌弃傻瓜调度机制的,可开始设计程序的时候才发现傻一点有傻一点的好处,那就是不用考虑太多复杂的情景,写起来比较快。不过在这次作业中我的调度器并没有完全按照指导书的设计建议写command和schedule方法,而是写了work方法管理请求队列和output方法调度电梯运行并输出,并且楼层类似乎也没有用上。说到测试,不得不向大家安利一个“懒人找bug法”就是生成几个三五万的测试用例找几个同学一起跑,然后比对输出,基本上跑两三个样例比对输出都一样的话就没什么功能方面的bug了。接下来就是格式匹配的问题,经过跟同学交流和互测环节,我发现其实大家写的正则匹配表达式都或多或少有些不同的地方,而这也恰恰是最容易出现bug的地方。

      尽管周三晚上7.前一直守在电脑前蜜汁自信地测每一个我能想到的可能出现bug的地方,但是,经历了这次互测我才发现,程序出几个bug也没什么大不了的,因为没有什么比无效作业更令人绝望了(难过.jpg)。是的在这里划重点提醒大家以后提交readme千万一定绝对要删除个人信息!!!否者这次作业无效不说,甚至你都不知道自己还有没有bug。毕竟已经第二次作业了,可能大家都比较谨慎吧,找bug渐渐变成了玩readme文字游戏,虽然这种问题与程序功能设计没什么关系,但是程序说明文档的严谨性也非常重要。

      emmm...类图嘛,第三次作业直接在第二次作业上改了,并且不小心点了保存......所以就不放出来了。

      不得不说,ALS确实比傻瓜电梯要聪明一些,这次作业代码量是噌噌噌地往上长,我在楼层类增加了时间和上行、下行、电梯内楼层灯的属性,重写了调度器的两个方法,其余类基本沿用傻瓜电梯的写法。虽然用了继承、接口和toString方法,但是我觉得在我的程序中,他们似乎没有起到多大作用,但toString还是蛮好用的,省去了很多输出上的麻烦。通过阅读别人的代码,我发现自己的程序在设计上有很多欠缺,比如说我在Request类里面判断输入是否正确,这样其实不太方便debug;还有就是在电梯调度的同时输出,方法分工不明确,也很不利于调试。以及划重点吐槽的是复制粘贴带来的一堆问题,因为偷懒,这次我在多处使用复制粘贴处理代码,有些变量名没有改全,但是编译却没有问题,所以对于逻辑没问题的程序来说,这种bug最难找了(周二上午de了半天才发现有一个变量名粘贴过来忘了改,可以说是相当费时费事了)。这次作业我的bug大多是时间、输出顺序和复制粘贴变量名错乱的问题。

      第三次作业类图:

      第三次作业metrics参数:

      暴露了调度器的work方法圈复杂度高、块嵌套深和参数多的特点。

    心得体会:

      只要身体好,JAVA真的可以速成(认真脸)。经历了上学期的祭祖,我决定再也不想熬夜了。敷着面膜熬夜,早上起来贴副眼贴假装昨晚睡了十几个小时的样子,然后泡一杯枸杞继续学习。

      程序功能的实现只是作业的一部分,写完还应该考虑如何优化的问题,metrics能暴露不少程序的问题并提供优化方向。(可当时怎么会想那么多呢,周三晚上7.前bug能de完就喜大普奔了呢)

      稳  住  !  我  们  能  赢  !

  • 相关阅读:
    搜狗浏览器
    解决vs2010无法找到System.Data.OracleClient的引用问题
    实体C# 反射动态给属性赋值
    三层的中间层,
    电脑开机时出现DHCP
    java and eclipse for linux install
    H3C阻止mac地址上网方法
    为什么我的电脑打开CHM文件无法显示内容
    Cannot complete the install because one or more required items could not befound
    linux下查看端口的占用情况
  • 原文地址:https://www.cnblogs.com/WENSHASHA/p/8689362.html
Copyright © 2011-2022 走看看