《构建之法》阅读笔记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("请输入您要查找的数:
");
  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位
",mid);
          return 0;
        }
  }
  if(n==a[max])
  {
   printf("
输入的数在数列的第%d位
",max);
  }
  else if(n==a[min])
  {
   printf("
输入的数在数列的第%d位
",min);
  }
  else if(n!=a[mid])
  printf("
输入的数不在数列中");
  return 0;
}

这个程序自己只要不按照他的要求输入就崩了,程序就不能用了。

因为水平有限,写的代码bug很多,自己的代码质量不能过关,在团队项目中很拖后腿,也学到了单元测试步骤:

设置数据,

使用被测类型功能,

比较实际结果和预期的结果。

同时也要明白好的单元测试的标准

单元测试应该在最基本的功能/参数上验证程序的正确性。

单元测试必须由最熟悉代码的人(程序的作者)来写。

单元测试过后,机器状态保持不变。

单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟)。

单元测试应该产生可重复性、一致的结果。

独立性——单元测试的运行/通过/失败不依赖于别的测试,可以认为构造数据,以保持单元测试的独立性。

单元测试应该覆盖所有代码路径。

优化时要经过分析,不能盲目优化!

【课本p35】 psp数据比较

2.4实践

写有意义的软件工程作业,这方面感觉系主任做得十分合理,不论是数据方面的扩展,还是 需求,用户和软件构建方面的扩展,都是经历过的,这样可以让我们对工程有更深的理解,同时也注意自己的规范。

第三章 软件工程师的成长

团队的作用,团队对个人的期望【51页下】 ,

3.2软件工程师的思维误区【52页】

3.3.1 职业发展—考级之路

想到老师让我们去考一些证书,软件架构等,就是提高自己的含金量,让自己更有价值,在毕业的时候有更多的资本。

第四章  两人合作

代码规范,写代码要简明,易读,无二义性。

缩进四个空格,行宽以及括号,分行【格式D1】

命名,下划线,大小写(lowerCamel方式),注释

代码设计规范,对函数,参数,类等做出规范命名。

主要感受就是,在两人合作时就得注意代码规范,其实自己开发也应该注意代码规范,只是两个人合作乃至一个大的团队合作,对于代码的要求更是严格,如果没有一定的规范,团队中每个人都有自己的代码规范,我写我的,你写你的,只顾自己不管团队,那么这个项目是不可能完成的,光和平合作都实现不了!所以要做代码复审,说实话没读《构建之法》这本书的时候根本不知道开发软件这么麻烦,看了之后对其有所了解,也理解了点为何要做代码复审。

对于代码规范,【附图p69代码4-1】,相信很多人都看不下去,如果真的写成这个样子的话,那么离被炒鱿鱼不远了。

两人合作,肯定涉及到分工,要分工肯定又涉及到了交流。团队开发模式有很多种,各自有各自的特点,而团队开发肯定是个复杂的项目,团队内部也肯定要分工,有人写文档,有人写代码,有人做设计,有人做测试等等,团队交流很重要!

原文地址:https://www.cnblogs.com/flw0322/p/10982355.html