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

第四章

   原文:

 错误处理

 断言


如何验证正确性?那就要用断言(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、结对编程可以应用到其他开发模式中吗?


第十七章

 原文:

效能曲线和假团队

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

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

原文地址:https://www.cnblogs.com/tingjuanli/p/8674224.html