听说下节课要带电脑啊,啊/吃惊,民哥太别出心裁了吧,“到时候一教室的电脑肯定特别壮观”,“永哥的电脑就能坚持十分钟,那他怎么办”,“我代码写的不好,到时候肯定丢死人了”,就在大家七嘴八舌,议论纷纷的时候,我们终于迎来了《软件工程》。
一上课民哥就给了我们一粒定心丸,“我让你们写的程序特别简单,就比‘hello word’难一点,而且代码我也给你们”,哦,这样我们就安心多了。嘻嘻,这节课我们主要学的是单元测试,而且是现场测试,查找List[]的最大值。
民哥给的代码是这样的:
int Largest(int list[], int length) { int i,max; for(i = 0; i < (length – 1); i ++ ) { if(list[i] > max) { max=list[i]; } } return max; }
测试过后的结果为:
最大值竟然是3,返回去看源程序,原来i的长度定小了,并且max没有赋初值,修改后的程序为:
int Largest(int List[],int length) { int i,max=List[0]; if ( List == NULL|| length == 0) { return 0; } for(i=0;i<length;i++) { if(List[i]>max) { max=List[i]; } } return max; }
结果为:
但在限时调程序的过程中,民哥一直强调如果输入的不是整数怎么办如果输入中有0怎么办,如果数组为空怎么办,课后我就修改了一下代码:
int Largest(int list[],int length) { int i,max=0; if(list!=null&&length>0) { max=list[0]; for(i=0;i<length;i++) { if(list[i]>max) { max=list[i]; } } } else { printf("数组为空!"); } return max; }
这样就好多了,通过这节课我知道了什么是单元测试:单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。使用单元测试这个简单有效的技术就是为了令代码变得更加完美。这个我是真真的体会到了,把原来存在错误的代码变得现在这么完美,单元测试真的很重要!在以后写代码的时候要多用单元测试每个模块,养成这样的好习惯,以后代码才会变得简单易懂。