OO第三次博客
Posted .Stay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OO第三次博客相关的知识,希望对你有一定的参考价值。
调研
??随着社会上各公司业务的发展,项目越来越多,越来越大,复杂性也越来越高。查找一个BUG变得越发抓狂;新人熟悉一块代码也变得越发困难。有的时候顺手写下的一行充满坏味道的代码,可能当时不会出现什么影响,而且当事人也十分清楚自己写的东西。但是,当日积月累之后,这种坏代码越来越多,整个项目就变得混乱不堪,牵一发而动全身,各种错误,修复了这影响了那。久而久之,规格化代码就成了不可或缺的一部分,其重要性不亚于代码本身。
??而要解决前面说的这些情况,必须要有一个规范来进行约束。不以规矩不成方圆,而且,这些规范必须也要有比较持续稳定的代码审核机制来支持。所以,当下规格化设计越来越受到人们的重视。
规格bug以及原因
??三次作业下来,总共被挑出1个规格相关bug。这个bug其实跟规格本事关系不大,如下:
\*
*@overview:
*\
??帮我测试的同学认为这里要写在同一行,而不是三行,理由是课件上是写在同一行的。其实当时的初衷是这样写能够让对面看的时候轻松一些,岂料想被报了一个bug……言归正传,虽然jsf规格方面没有被挑出过多bug,但这并不意味着自己的jsf足够规范。
前置后置例举及改进
前置条件相关
名称 | Before | After |
---|---|---|
??尽量使用布尔表达式?? | [email protected]:long类型的wait_time?? | [email protected]:wait_time== long type |
?? 过多使用自然语言 ?? | ?? @REQUIRES:int类型的pos_x ?? | ?? pos_x == int type ?? |
??缺失?? | [email protected]:None?? | [email protected]:sc!=null?? |
??考虑当前方法所使用的某个属性的范围?? | [email protected]:this.state == int type,this.id==int type?? | [email protected]:0<=id<=99,0<=this.state<=3?? |
??构造方法中传入的某些对象型参数应有效?? | ??略?? | [email protected]:taxi_gui has been initalized?? |
后置条件相关
名称 | Before | After |
---|---|---|
??布尔表达式?? | [email protected]:\result为long类型?? | [email protected]:\result == long type?? |
??从未使用谓词逻辑?? | ??以出租车数组的初始化为例?? | [email protected]:\all car[i].stats;0<=car[i].state<=3?? |
功能性bug
??这几次作业功能性方面一共被挑了三个bug。
- Loadfile文件由于在读文件内容时用得while(true)循环,没有控制好跳出循环的条件导致crash
- Loadfile内的出租车位置初始化没有readme说明清楚只能在程序开始时使用,导致在程序开始后使用时出租车随机走的下一地点已经确定,即出租车被设定在指定位置后仍旧会按着上一次确定的下一地点走。
- 第十一次作业由于内存问题无法实现可追踪出租车行驶关闭道路。对于这一bug,需改变程序结构,改良一些不必要的数组的大小 。
心得体会
??在写每个方法前,都会先确定该方法需要的参数,由此便确定了前置条件;接着,思考该方法的目的,进而确定modifies;最后思考该方法执行后的效果来确定effects。三次作业写下来,不再有前两个月的写代码时那种山一般的感觉;反之,这三次的代码更注重培养对于细节把控的能力,以及对规范化设计思想的理解。
以上是关于OO第三次博客的主要内容,如果未能解决你的问题,请参考以下文章