• 阅读《构建之法》四章、十七章


    第四章

       原文:

     错误处理

     断言


    如何验证正确性?那就要用断言(Assert)。断言和错误处理是什么关系?当你觉得某事肯定如何时,就可以用断言。

    Assert (p != NULL)
    • 1

    然后可以直接使用变量p。如果你认为某事可能会发生,这时就要写代码来处理可能发生的错误情况。如

    ……
    p = AllocateNewSpace(); // could fail
    if (p == NULL)
    { // error handling. 
    }
    else
    { // use p to do something
    }

     

      
      问题:什么是断言?为什么要用断言?断言与异常的区别?
     
      相关资料:
      断言是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。
      
      从查阅的资料来看,总结如下:
     
    异常被捕获后可以不作处理,程序从捕获位置继续执行。而断言是完全无法忽略的,程序在断言失败处立即终止。因此断言通
     
    常用于调试版本,用来发现程序中的逻辑错误。虽然异常也能起到这样的作用,但是不应该用异常代替断言:

    1) 如果发现了逻辑错误,必须修改程序,而不可能在程序中进行处理和恢复,所以不需要向外传送,没有必要使用异常。

    2) 使用断言的开销比异常小得多,而且断言可以从发布版中完全去除。

    异常用于处理正确程序中的运行期问题(比如内存分配失败,窗口创建失败,线程创建失败,打开文件失败),以尽可
     
    能恢复,而不是终止程序。对于运行异常,使用断言是非常不合适的,理由很显然:

    1) 断言在发布版不起作用;

    2) 断言的处理方式不够友好;

    3) 运行异常不是程序错误,没有必要报告源代码出错位置;

      

      困惑1、目前遇到的问题都是通过异常处理的,还没使用过断言处理,很疑惑什么情况下两者进行错误处理的差别不大?


      原文:

    如何处理C++中的类

     虚函数(Virtual Function)

    1)使用虚函数来实现多态(Polymorphism)

    2)仅在很有必要时,才使用虚函数

    3)如果一个类型要实现多态,在基类(Base Class)中的析构函数应该是虚函数

      虚函数对我来说是很模糊的概念,然而书中的文字并未解答我的疑惑---虚函数的定义及其作用

      以下是查阅的相关资料:

    简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。

    虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;

    用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略。

      困惑2、文章说在c++中使用虚函数来实现多态,那么与java实现多态的区别是怎样的?


      原文:

    结对编程

    结对编程的优势

    1. 在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作解决问题的能力更强

    2. 对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感

    3. 在企业管理层次上,结对能更有效地交流,相互学习和传递经验,分享知识,能更好地应对人员流动

    总之,如果运用得当,结对编程可以取得更高的投入产出比(Return of Investment)

      困惑3、结对编程可以应用到其他开发模式中吗?


    第十七章

     原文:

    效能曲线和假团队

    ...到各种阶段的团队之间,往往还有一个“假团队”的阶段...面和心不和,有人打酱油,这样的团队的效率低还不如个人单干的工作组。

      困惑:通过对本段文字的阅读,似乎没有看到对“假团队”的处理方法!前面也讲过结对编程的好处与挑选队友的技巧,那么团队成员应该是常常相互沟通,彼此相对了解的,出现此种情况归根于什么呢?

  • 相关阅读:
    spark系列-6、对Application,Driver,Job,Task,Stage的理解
    spark系列-5、RDD、DataFrame、Dataset的区别和各自的优势
    spark系列-4、spark序列化方案、GC对spark性能的影响
    spark系列-2、Spark 核心数据结构:弹性分布式数据集 RDD
    nginx学习(九):跨域配置和防盗链配置
    nginx学习(八):nginx配置gzip
    nginx学习(七):nginx提供静态资源服务
    nginx学习(六):日志切割
    nginx学习(五):nginx.conf 核心配置文件详解
    nginx学习(四):nginx处理web请求机制
  • 原文地址:https://www.cnblogs.com/tingjuanli/p/8674224.html
Copyright © 2020-2023  润新知