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 ...
随机推荐
- Docker 笔记学习
文章目录 概述 CentOS7 Docker 安装 启动 Docker 后台服务 镜像加速 Docker常用命令 如何创建一个镜像 存储和载入镜像 上传镜像 容器的基本操作 创建容器 终止容器 如何进 ...
- 流程控制之☞ while 和 for 的故事
学习三连鞭... 什么是循环? 为什么要有循环? 如何用循环? 循环的基本语法:while 和 for 先来看while循环: while条件:首先得是个循环体. 1.如果条件为真,那么循 ...
- Python -- 修改、添加和删除元素
大多数列表将是动态的,这意味着列表创建后,将随着程序的运行增删元素. 修改列表元素 修改列表元素的语法与访问列表元素的语法类似.要修改列表元素,可指定表名和要修改的元素指引,再指定该元素的新值. #代 ...
- win10开启运行下显示历史操作记录
步骤 设置,隐私,常规,允许windows跟踪应用启动,以改进开始和搜索结果
- @RequestBody,@RequestParam请求数据接收数据
一. @RequestBody 注解 @RequestBody是用于解析body中的json内容,对于我们使用时候我们需要指定Content-Type参数为application/json,标识我们需 ...
- 如果对象为空,java函数String.valueOf(Object obj)返回"null"字符串
源码如下: public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toStr ...
- JavaDailyReports10_06
今日收获: 一.所有引用类型变量的初始化一定要使用new 关键字定义声明,空指针异常的错误原因可能是变量没有初始化导致的. 每一个类体的数据成员一定要在实例化的同时赋值,用一个实例化的类实现问题中最小 ...
- sqlite嵌入式数据库简介及特性
p.p1 { margin: 0; font: 12px "Helvetica Neue"; color: rgba(69, 69, 69, 1) } p.p2 { margin: ...
- 设计模式之委派模式(Delegate Pattern)深入浅出
学习目标:精简程序逻辑,提升代码的可读性. 内容定位:希望通过对委派模式的学习,让自己写出更加优雅的代码的人群. 委派模式定义: 委派模式(Delegate Pattern)的基本作用是负责任务的调度 ...
- Lesson_strange_words6
stylized 有艺术效果的 slide 幻灯片,滑动 template 模板,样板 grasp 掌握,领悟 factor 因素 twisted pair cable 双绞线 twisted 扭曲的 ...