OO前三次作业分析
一,第一次作业分析
度量分析:
第一次的oo作业按照常理来说是不应该有这么多的圈复杂度,但是由于第一次写的时候,完全不了解java的相关知识,按照c语言的方式来写,完全的根据指导书的逻辑,先写好了正确的方式然后又一步步的判断所有错误的方式,由于没有采用正则表达式,导致代码冗长,写了很多的if else循环导致嵌套过多。执行的次数大大的增加,使得程序的维护十分的困难。
类图分析:
第一次作业所创建的类很少,一个储存多项式的类和一个多项式集合的类。所有关于输入的判断全部都放入了一个类里面这就导致了前面度量分析的结果,嵌套过多,而且结构十分的简单,一眼望过去一个类里面300行全是判断语句,让人看起来十分的难受。但是已经能够初步的理解类的属性。勉强能够做到把一个类的属性和他的方法都写出来。通过第一次的作业,完成了java最基础的入门,就是使用类。
二,第二次作业分析
度量分析:
第二次的傻瓜电梯对比第一次的度量分析可以明显的看到,嵌套的使用次数和圈复杂度都变少了,主要原因还是使用了正则表达式,减少了判断输入错误时的判断语句。另外由于指导书的要求,强制要求用5个类来完成任务,但是可以明显的感觉到自己对于类的调度还是十分的模糊,刚开始完全不知道怎么样写出五个类来,脑子里的想法还是过于的单一,面相对象编程的水平还是很低,进行顶层的设计模块始终脑子里还是一团粥,最终还是和舍友共同讨论出了满足指导书的顶层模块的使用方式。
类图分析:
类图的分析明显的揭露了本次作业的问题,类之间的调度毛病十分的大,由于没有搞明白floor类最终是干什么的,没有加入有关的属性和方法,也没有在别的类中调用他的对象,完全就是一个空的类。而且调度的很简单,单纯的把各个类调度到主函数之中,还是没有解决代码的长度过长的问题,带有主函数的类过于的繁琐,加入了大量的判断,还是不易于维护和修改。
三,第三次作业分析
度量分析:
第三次作业,做一个有一点聪明的电梯,感觉难度比上一次的傻瓜电梯不是大了一点点,继承和接口傻傻分不清就算了,关键是感觉写完了以后有成堆的bug,可以很明显的感觉到,圈复杂程度和嵌套的复杂程度又爆炸了,因为实在是写入了太多的判断,多到自己现在也没有想好该怎么样去优化自己的代码,因为在debug的时候是十分的绝望的,经常干掉一个bug,又发现出来了更多的bug,感觉各种的控制变量定义的飞起还是无济于事,最终交上去的代码仍然有很多的bug。可能还是自己在思考这个题的时候没有想到简单的方式,感觉为了处理掉一个bug,只是单纯的解决目前出现的数据情况而去定义一个新的控制变量是完全的没用的,只会平白的加大你的代码量,而去看起来十分的蠢,这次的作业可以说是十分的不满意,仍然有很多地方需要去完善。
类图分析:
这次的电梯要求使用继承,感觉上继承很像是将父类的东西复制到子类当中,只不过可以不写,而且你可以在子类之中添加新的功能。可以说用继承在一定程度上解决了代码长度过长的问题,因为可以把一部分的程序的分析放入到父类当中,一部分放入到子类当中,而且通过继承的使用可以更方便去调试,不用单步调试一行一行的走,通过调用类的对象能够一下子运行完,看到结果,这样就能够判断到底是父类的函数错误还是子类的函数错误。可以说是一定程度上增加了代码的可读性吧,但是明显感觉自己的使用还是不够的熟练,感觉一定程度上能通过合理的使用类来减少一个类中的代码长度,把功能细分,增加代码的可读性和可修改性。但是自己目前还没有做到,希望以后能做到。
四,自己程序的bug
自己程序的bug还是很多的。利用bug树的方法确实消灭了一下bug使得自己的程序能够完成简单的样例,并且通过公测,但是对于很长的数据,就暴露了自己考虑的不周到,没有将多个bug联合起来考虑,一次消灭到底,内心中还是有那种拆东墙补西墙,就事论事,用一个错误的样例只能发现一处表面的bug,但是没有进过自己深层次的思考,思考错误的样例的根本原因和自己程序没有考虑到的地方,这种做法导致了第三次作业bug不断的出现,搞得自己很心律憔悴,最终没有de完自己所有的bug就提交。因而导致公测出现了错误,并且被发现了bug。
五,自己发现别人程序bug所采用的策略
发现别人程序的bug肯定还是先看一下对方的程序吧,了解一下他用的方法,看看是否有明显的自己写代码时考虑到的问题他没有考虑到,发现这种很明显的bug,之后就是测试一些边缘的数据,例如输入要求100行,试一下101行,看一下数组有没有可能被爆,看一下数值是否可以超过int类型,这些都是可以考虑的地方。之后就是测一些很大的数据啦,越是复杂的程序,跑很大的程序就有可能因为组合情况的出现而考虑不周出现错误。发现别人的错误代码之后,缩小错误的位置,将bug的真正原因找到。然后让别人心服口服。
六,心得体会
1,将大块的代码分开很重要,不要写在一个函数里面,把各自的功能分清楚,然后写进不同的函数不同的类里面,既有助于debug又有助于别人去阅读代码。
2,debug一定要找到bug的真正原因,不能只是表面的看到了错误就想着只消除这种情况就可以了,这样很容易导致自己前面的逻辑全盘错误,出现更多的bug。
3,对于类的调度有了一些自己的想法,但是明显调度的还不是很熟练,类之间,类内部方法之间的调度还是很松散。
4,如果不想自己在ddl前过于的慌张,交上一份自己不满意的答卷,那就早点开始吧。
OO前三次作业分析的更多相关文章
- OO前三次作业思考(第一次OO——Blog)
OO前三次作业总结 基于度量分析程序结构 由于三次作业较多,决定分析内容.功能最为复杂的第三次作业. 上图为第三次作业的类图.我使用了一个抽象类Factor,写了五个因子继承Factor,然后又单独开 ...
- OO前三次作业总结
一.第一次作业 1.程序设计分析 ![img](s1.ax1x.com/2018/04/02/CSgoSU.png) 图1 第一次作业类图 ![name](https://images2018.cnb ...
- OO前三次作业简单总结
随着几周的进行,OO课堂已经经历过三次课下作业.在这三次作业中,我被扣了一些分数,也发现了自己几次作业中一些存在的共同的问题. 首先以第三次作业为例分析,我程序的类图如下 一共九个类,其中Als_sc ...
- oo前三次作业博客总结
第一次作业 实现多项式的加减运算,主要问题是解决输入格式的判断问题. 输入实例: {(3,0), (2,2), (12,3)} + {(3,1), (-5,3)} – {(-199,2), (29,3 ...
- OO第三单元作业分析
一.JML的理论基础应用工具链 JML是用于对Java程序进行规格化设计的一种表示语言.基于Larch方法构建. (1)注释 JML以javadoc注释的方式来表示规格,每行都以@起头.有两种注释方式 ...
- OO第三单元作业总结
OO第三单元作业总结--JML 第三单元的主题是JML规格的学习,其中的三次作业也是围绕JML规格的实现所展开的(虽然感觉作业中最难的还是如何正确适用数据结构以及如何正确地对于时间复杂度进行优化). ...
- OO第三单元作业——魔教规格
OO第三单元作业--魔教规格 JML的理论基础和相关工具 JML(Java Modeling Language,Java建模语言),在Java代码种增加了一些符号,这些符号用来标志一个方法是干什么 ...
- 【OO学习】OO第三单元作业总结
[OO学习]OO第三单元作业总结 第三单元,我们学习了JML语言,用来进行形式化设计.本单元包括三次作业,通过给定的JML来实行了一个对路径的管理系统,最后完成了一个地铁系统,来管理不同的线路,求得关 ...
- Blog总结(前三次作业总结)
前三次作业总结 1.前言 (1)第一次题目集共有8道题目,难度较为简单,知识点为JAVA的一些编程基础知识点,如输入输出,选择,循环,一维数组等. (2)第二次题目集共有5道题目,难度较第一次题目集有 ...
随机推荐
- LeetCode 203. Remove Linked List Elements 移除链表元素 C++/Java
Remove all elements from a linked list of integers that have value val. Example: Input: ->->-& ...
- python学习(一)--python解释器
python学习模式,每篇都会有一些总结,然后根据总结去查一查,学一学,基础就会很扎实的 python解释器 1.python版本和安装 python2.x和python3.x https://www ...
- 小程序官网CMS开源项目出炉,Weixin-App-CMS 1.0 版本正式发布
Weixin-App-CMS 是捷微团队开发的微信小程序CMS开源项目,涵盖了微网站的基本功能,能够快速发布简单易用的小程序网站.采用工具“微信web开发”上传小程序,即可快速体验发布体验小程序网站. ...
- XML文档的生成和解析操作方法
XML文档和JSon文档同为网络传输中的数据格式,JSon的解析和创建已经在新浪微博的使用中相当熟悉,故仅仅记载XML文档的相关方法. 关于XML文档: 1.一种便于编辑和传输的数据文件格式 2.xm ...
- 关于VMware虚拟机安装镜像时黑屏的解决办法
新下载的VMware14,设置了新的虚拟机,镜像放的是ubuntu系统,然后开机要安装系统的时候黑屏,并没有进入到安装系统的界面 解决办法:在管理员权限下打开cmd,然后运行netsh winsock ...
- pyhon的yileld的一点笔记
yield感觉很神秘,感觉也不好理解,学习pyhon最后终归是要学习这个东西,研究了一段时间,把自己的笔记写下来 说简单点就是遇到yield就停止往下执行代码,也包括不执行yield这条语句,然后返回 ...
- [Tools] 一种调试 Android App 接口的方式 (Fiddler/Wireshark)
要求:Windows电脑与手机在同一局域网内(Wifi). [ Fiddler 设置代理 ] 下载地址:https://www.telerik.com/download/fiddler 依次 Tool ...
- Spring再接触 集合注入
beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...
- 《DOM Scripting》学习笔记-——第八章 充实文档的内容
本章内容 一.一个为文档创建“缩略词语表”的函数 二.一个为文档创建“文献来源链接”的函数 三.一个为文档创建“快速访问键清单”的函数 利用DOM动态的收集和创建一些有用的辅助信息,并把它们呈现在网页 ...
- django-rest-framework配置json web token
安装jwt库,简单快速的生成我们所需要的token 1.安装djangorestframe pip install djangorestframe 2.在settings.py的INSTALLED_A ...