zoukankan      html  css  js  c++  java
  • 《构建之法》阅读笔记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】,相信很多人都看不下去,如果真的写成这个样子的话,那么离被炒鱿鱼不远了。

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

  • 相关阅读:
    @font-face
    闭包
    DOM事件
    DOM属性
    使用谷歌chrome浏览器查看任何标签的固有属性
    chmod命令
    C++笔记之零碎点
    C++学习之 —— 输入输出
    常见素数筛选方法原理和Python实现
    Django的MVT模型
  • 原文地址:https://www.cnblogs.com/flw0322/p/10982355.html
Copyright © 2011-2022 走看看