《构建之法》阅读笔记01
软件=程序+软件工程
扩:软件企业=软件+商业模式
软件开发的不同阶段:
1,玩具阶段 2,业余爱好阶段 3,探索阶段 4,成熟的产业阶段
软件业笑话 it's not a bug ,it's a feature!
单元测试
在这方面呢,自我感觉做的还不够多,现在写的程序还是比较简单,通常也就是自己按照要求自己写程序,直接运行,但是并没有考虑到程序的健壮性,比如
#include <stdio.h> int main() { int a[16]={0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1},min=1,max=15,mid,n; //max为数列长度,a[0]作为第一个数组元素 printf("请输入您要查找的数:\n"); scanf("%d",&n); while(min!=max) { mid=(min+max)/2; if (n>a[mid]) max=mid; else if (n<a[mid]) min=mid; else { printf("输入的数在数列的第%d位\n",mid); return 0; } } if(n==a[max]) { printf("\n输入的数在数列的第%d位\n",max); } else if(n==a[min]) { printf("\n输入的数在数列的第%d位\n",min); } else if(n!=a[mid]) printf("\n输入的数不在数列中"); return 0; }
这个程序自己只要不按照他的要求输入就崩了,程序就不能用了。
因为水平有限,写的代码bug很多,自己的代码质量不能过关,在团队项目中很拖后腿,也学到了单元测试步骤:
设置数据,
使用被测类型功能,
比较实际结果和预期的结果。
同时也要明白好的单元测试的标准:
单元测试应该在最基本的功能/参数上验证程序的正确性。
单元测试必须由最熟悉代码的人(程序的作者)来写。
单元测试过后,机器状态保持不变。
单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟)。
单元测试应该产生可重复性、一致的结果。
独立性——单元测试的运行/通过/失败不依赖于别的测试,可以认为构造数据,以保持单元测试的独立性。
单元测试应该覆盖所有代码路径。
优化时要经过分析,不能盲目优化!
【课本p35】 psp数据比较
2.4实践
写有意义的软件工程作业,这方面感觉系主任做得十分合理,不论是数据方面的扩展,还是 需求,用户和软件构建方面的扩展,都是经历过的,这样可以让我们对工程有更深的理解,同时也注意自己的规范。
第三章 软件工程师的成长
团队的作用,团队对个人的期望【51页下】 ,
3.2软件工程师的思维误区【52页】
3.3.1 职业发展—考级之路
想到老师让我们去考一些证书,软件架构等,就是提高自己的含金量,让自己更有价值,在毕业的时候有更多的资本。
第四章 两人合作
代码规范,写代码要简明,易读,无二义性。
缩进四个空格,行宽以及括号,分行【格式D1】
命名,下划线,大小写(lowerCamel方式),注释
代码设计规范,对函数,参数,类等做出规范命名。
主要感受就是,在两人合作时就得注意代码规范,其实自己开发也应该注意代码规范,只是两个人合作乃至一个大的团队合作,对于代码的要求更是严格,如果没有一定的规范,团队中每个人都有自己的代码规范,我写我的,你写你的,只顾自己不管团队,那么这个项目是不可能完成的,光和平合作都实现不了!所以要做代码复审,说实话没读《构建之法》这本书的时候根本不知道开发软件这么麻烦,看了之后对其有所了解,也理解了点为何要做代码复审。
对于代码规范,【附图p69代码4-1】,相信很多人都看不下去,如果真的写成这个样子的话,那么离被炒鱿鱼不远了。
两人合作,肯定涉及到分工,要分工肯定又涉及到了交流。团队开发模式有很多种,各自有各自的特点,而团队开发肯定是个复杂的项目,团队内部也肯定要分工,有人写文档,有人写代码,有人做设计,有人做测试等等,团队交流很重要!