OO第三次博客作业
一.规格化设计的发展历史及重要性调研
规格化设计与结构化、模块化设计密不可分,伴随着OOP语言的发展,规格化设计思想逐渐形成体系,慢慢完善。从1940年的面向机器编程,到之后的面向过程编程,逐渐出现了我们现在使用的各个语言的原始版本。而随着代码量的不断增加,程序功能的不断复杂化,简单的面向过程编程不再能够满足人们的需要,因此,出现了结构化程序设计。
在这一过程中,编写代码的人们也注意到了规格的重要性。Edsger Dijkstra 于 1968 发表了著名的《GOTO 有害论》的论文,提出了程序设计中常用的GOTO语句的三大危害:破坏了程序的京东一致性,程序不易测试,限制了代码优化,引起了长达数年的论战,并由此产生了结构化程序设计方法。同时,第一个结构化的程序语言 Pascal 也在此时诞生,并迅速流行起来。在此之后,随着硬件的快速发展,程序的复杂度迎来了再一次的飞跃,而这时出现了面向对象编程。此后规格化得到了人们越来越多的重视,因为其可以帮助阅读者迅速理解代码,也能帮助设计者更好的设计、规划自己的程序,避免由于粗心大意造成的种种错误。
二.规格bug及产生原因

因为对规格的不理解和不重视,导致根本没有认真写,忽略了很多细节。
三.改进建议
1.前置条件
(1)每一个方法的前置条件都是\exist 需要传入的参数,而不写参数的具体范围。
给出具体的参数范围。
(2)前置条件不使用类似\all的关键字
按要求使用关键字。
2.后置条件
(1)使用自然语言而不用布尔表达式
由于方法长度过长实现的东西很多,很难用布尔表达式表达,所以就是用自然语言,其实可以拆分方法,使之变得简单。
(2)直接复制代码
比如一个get类型的方法,return arraylist.get(i),就直接复制这段代码,至少应该写成\result == arraylist.get(i)。
(3)使用=而不是==
构造器方法经常是=,但是要求是布尔表达式。
(4)没有关于异常的信息
加入关于异常的信息。
四.功能bug

五.设计、撰写规格的思路和体会
个人能够理解代码规格化的好处,比如优化代码风格,使代码的易读性增加,有利于大型工程的团队合作。但是理解不代表能体会到,或者说现阶段能体会到。
尝试过先写规格再写方法,但是由于即使先想到了一个方法的大致需求,细节还是一直在改变,到头来还是要回去修改规格,这反而增加了完成作业的时间和难度。同时现在的作业都是个人独立完成,也没有什么让别人读懂代码的需求,甚至为了逃避被找bug,越让人看不懂越好,规格的意义就更微乎其微。
回归到作业的话,互测找规格问题,使面向运气编程这个梗更具有意义了,遇到好的人根本不看规格,遇到坏的人找不到功能bug就死扣规格,而由于规格本身细节就不成熟,导致很多问题根本扯不清谁对谁错,分数最后还是被扣了,这其实本身是课程组老师的问题,但是后果全是由学生承担的,就更让人不理解规格的意义到底是什么了。

浙公网安备 33010602011771号