3html
//git
//首先,在开始写这篇博客以前,我忽然想不起来此次做业是要回忆第几回做业了,这几周我对OO的热情已经归于0点,还有点负温了,自嘲一下,当初电梯的时候我仍是第一个发issue的人(笑)。github
20世纪60年代,软件出现严重危机,Dijkstra提出了goto语句的危害,由此引起了软件界长达数年的论战,并产生告终构化程序设计方法。Pascal语言在20世纪70年代占有统治地位。web
随着计算机技术的发展,结构化设计语言和结构化分析没法知足用户的需求,OOP由此应运而生,即面向对象的程序设计。OOP的诞生是程序设计方法学的一场革命,大大提升了开发效率,减小了软件开发的复杂性,提升了软件的可维护性,可拓展性。1990年以来,面向对象分析、测试、度量和管理研究都获得长足发展。canvas
规格化设计伴随OOP而生,为了提升程序的规范性,对类、方法等进行规范化设计,有利于程序的模块化划分。这样设计程序的数据更加安全可控,测试也变得容易,软件的维护性获得提升,于是受到程序设计人员的重视。安全
bug类别 | bug内容 | 出现位置 |
抢单服务->无车响应不告知乘客 | 未在readme中说明如何使用修改边连通与否的指令 | readme |
抢单服务->抢单窗口大小不正确 | 同窗你是没看答疑区吧,助教说了不能禁止指定出租车状态为服务或接单状态 | issue |
出租车运行一个时间不对 | 时间有误 | Timepasser.timepass |
Effeccts逻辑错误 | 只写了充分条件,没写成充要条件 | TwoSideMessage.TwoSideMessage |
JSF不符合规范 | 方法的jsf写在方法前面 | 心中 |
非法输入->无换行 | 没考虑到测试者违反指导书要求,不保证loadfile文件正确性时的状况 | LoadProcessor.startLoad |
个人绝大多数函数的前置条件都是None,由于是private的,或者自己就是包内自用的,不过室友所以被报过incomplete,说太简短了,并且如今也还在仲裁ing,因此应该是很差的写法。ruby
犹豫了一下,由于我接手的全部测试代码,要么是None写法,要么是中文写法,因此既然None写法很差,中文写法应该是好的?可是中文不是JSF吧。markdown
这是我写后置条件的方法,由于绝大多数函数均可以这么写,毕竟绝大多数函数的逻辑都很简单,只是很简单的状态访问罢了。不过由于容易忘记把=换成==,会被报bug,因此是很差的写法。app
中文不是JSF。ide
方法名 | 功能bug数 | 规格bug数 |
readme | 1 | 0 |
issue | 1 | 0 |
Timepasser.timepass | 1 | 0 |
TwoSideMessage.TwoSideMessage | 0 | 1 |
心中 | 0 | 1 |
LoadProcessor.startLoad | 1 | 0 |
由表格中能够看出,功能bug和规格bug没有任何相关性。
规格是一种容易出错的东西,由于没有编译器会提示语法错误,也没法进行测试来检查正确性,因此在实际的工程实践中应该尽可能避免使用规格。
这门课已经走歪了,我这样一个已经丧失热情的人的博客就不用看了,请老师看看那些认真对待这门课程的人此次写的博客,好好看看他们的bug到底都是怎样的bug——咱们是学生,分数永远是第一驱动力,任何为了分数而努力的行为都是能够被称之为“学习”的行为。若是OO这门课并非为分而学的话,那为什么要引入排位制度?咱们已经不是会为了虚荣、理想而奋斗的年纪了,都是实实在在、脚踏实地地一点一点地去扣的。