OO第三次总结博客
规格化设计的发展历史
(因为很难寻找,所以参考了下别的同学的调研结果)
规格化设计与结构化、模块化设计密不可分,伴随着OOP语言的发展,规格化设计思想逐渐形成体系,慢慢完善。
20世纪60年代,程序的模块化设计思想被提出。伴随着计算机行业的迅速发展,为了解决程序可靠性等问题,结构化、模块化的设计为程序员提供了使用接口。每个模块各司其职,这样的程序便于扩展和维护,大大降低了当时开发者的困难。
20世纪80年代,面向对象语言兴起,结构化、模块化的思想在面向对象语言里作用被体现得更加彻底。与此同时,为了提高程序语言的规范性,对类和方法进行更好的维护,对其进行规范化设计,也使得数据变得更加安全可控,测试也更加简单易行。
规格化设计为何受到重视
为了类和方法能够变得规范可控,对类和方法进行规范化要求就变得有必要起来。在工程里面, 一个程序也许会有多人同时进行编写,那么由于没人不同的代码习惯,可能产生不同的设计理念,通过规格化设计也可以同步多人的设计方法,避免产生设计上的漏洞。规格化的程序不更易于调试,也更容易被维护,有利于程序的长远生存和发展。
规格BUG表
仅homework9有规格bug,且无雷同问题(雷同的俩都被报了)
Bug类别 | Bug内容 | 出现位置 | 代码行数 |
前置条件不为布尔表达式 | 用了逗号来连接而不是用&& | updateMap | 22 |
前置条件不为布尔表达式 | 用了逗号来连接而不是用&& | updateFlow | 4 |
规格BUG原因
究其原因是因为在写不等式时用了逗号,比如:0<=x1,x2<=1 这种类型,导致前置条件不是布尔表达式。但是很奇怪,在下一次作业里,助教又告诉我前置条件可以不为布尔表达式了,既然要这样子,我也没什么办法,起码从此以后我每次都有注意前置条件要为布尔表达式。
前置条件和后置条件的不好写法
(1)不用布尔表达式,而选择用自然语言
改进条件:use bool expression
(2)在后置条件里写出代码的算法实现
改进条件:only display the changes of attributes instead of the algorithm
(3)很多人喜欢在前置条件里写None,但我觉得这不是布尔表达式
改进条件: @REQUIRES: true
(4)过于简略,没有完整体现后置条件
改进条件: complete the effects
(5)用=代替==
改进条件: use ==
功能BUG
和规格BUG无聚集关系,一共就俩,就不列什么表了
第一次被报了3个都是因为整体算法偏慢,运行久了每个出租车就不同步了,然后就有问题了,为了解决这个问题,我让每个车sleep的时间变成了setTime-算法花费的时间。也就是给程序"造了个假",这样每辆车就同步了。
第二次是因为对于Load filename的指令忘记正则了,输个a|file.txt,程序也能正常执行,虽然我readme写了Load filename 由测试者来保证正确,但我也懒得管了。
心得体会
规格这个东西设置的初衷是好的,但拿来被恶意扣分就很可耻了。
有的人恶意扣了分后还站在制高点教育被测者,这就更不对了。
这种人我这么多周就遇到过一个,然后上次作业在吐槽版又看到了有同学恶意被扣,我也不知道是谁,但我只觉得,这很可悲。
在这种课程制度下,人性变得好可怕。
OO第三次总结博客的更多相关文章
- oo前三次作业博客总结
第一次作业 实现多项式的加减运算,主要问题是解决输入格式的判断问题. 输入实例: {(3,0), (2,2), (12,3)} + {(3,1), (-5,3)} – {(-199,2), (29,3 ...
- OO第三单元“技术”博客
主要针对第三单元的三次作业 JML语言的理论基础.应用工具链情况 JML指的是Java建模语言,全称是Java modeling language,是一种行为接口规范语言,可用于指定Java模块的行为 ...
- Beta版本——第三次冲刺博客
我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...
- OO Unit2多线程电梯总结博客
OO Unit2多线程电梯总结博客 传说中的电梯居然就这样写完了-撒花
- RocEDU.课程设计2018 第六组 第三周进展 博客补交
RocEDU.课程设计2018第六组 第三周进展 博客补交 小组成员:20155211解雪莹,20155217杨笛,20155227辜彦霖 计划完成任务:完成课设所有内容 实际完成任务:跑通老师uco ...
- # RocEDU.课程设计2018 第三周进展 博客补交
RocEDU.课程设计2018 第三周进展 博客补交 本周计划完成的任务 (1).本周计划完成在平板电脑上实现程序的功能,跟第二周计划完成任务基本相似. 本周实际完成情况 (1).实际完成情况还差最后 ...
- 第三次ScrumMeeting博客
第三次ScrumMeeting博客 本次会议于10月27日(五)22时整在3公寓725房间召开,持续10分钟. 与会人员:刘畅.方科栋.窦鑫泽.张安澜. 1. 每个人的工作(有Issue的内容和链接) ...
- Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程
Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_t ...
- Hadoop案例(三)找博客共同好友
找博客共同好友案例 1)数据准备 以下是博客的好友列表数据,冒号前是一个用户,冒号后是该用户的所有好友(数据中的好友关系是单向的) A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I ...
随机推荐
- RabbitMq基本概念理解
RabbitMQ的基本概念 RabbitMQ github项目地址 RabbitMQ 2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的 消息中间件 ...
- Java并发包之 CopyOnWriteArrayList
大家在学习Java的过程中,或者工作中,始终都绕不开集合.在单线程环境下,ArrayList就可以满足要求.多线程时,我们可以使用CopyOnWriteArrayList来保证数据安全.下面我们一起来 ...
- HCIP -- OSPF 总结
OSPF:Open Shortest path First :开方式最短路径优先 一.基础知识: 1.使用范围:IGP 2.协议算法特点:链路状态型路由协议,SPF算法 3.协议是否传递网络掩码:是 ...
- 从零实现Linux一键自动化部署.netCore+Vue+Nginx项目到Docker中
环境搭建 1.安装Linux,这里我用的阿里云服务器,CentOS7版本 2.进入Linux,安装Docker,执行以下命令 sudo yum update #更新一下yum包 sudo yum in ...
- C#中string类型必填的诡异问题
背景 ASP.NETCore3.0项目,使用Swagger接口文档. 之前的项目都是Swashbuckle.AspNetCore-5.0.0 新项目想尝尝鲜,用最新版Swashbuckle.AspNe ...
- 【升级版】如何使用阿里云云解析API实现动态域名解析,搭建私有服务器【含可执行文件和源码】
原文地址:http://www.yxxrui.cn/article/179.shtml 未经许可请勿转载,如有疑问,请联系作者:yxxrui@163.com 我遇到的问题:公司的网络没有固定的公网IP ...
- MES系统介绍
为什么要引入MES系统? 随着ERP在企业应用的深入,ERP系统逐渐显示出其局限性.当ERP下达的工单到生产现场后,产品制造是以产线 "工单"或"批次"(Bat ...
- Linux嵌入式学习-Mplayer交叉编译-undefined reference to `clock_gettime' MPlayer
編譯Mplayera. 配置.configure# ./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm --enable-static ...
- IT 界那些朗朗上口的“名言
中国有很多古代警世名言,朗朗上口,凝聚了很多故事与哲理.硅谷的互联网公司里头也有一些这样的名言,凝聚了很多公司价值观和做事的方法,对于很多程序员来说,其影响潜移默化.这里收集了一些,如下. Stay ...
- jupyter安装插件Nbextensions,实现代码提示功能(终极方法)
jupyter安装插件,实现代码提示功能 第一步 pip install jupyter_contrib_nbextensions -i https://mirrors.tuna.tsinghua.e ...