《代码大全2》读书笔记--4

第八章:防御式编程

1、什么是防御式编程?为什么需要?

防御式编程不是指不让别人批评你的代码,而是指确保你要承担的责任,保证你的方法不会因为传入错误数据而破坏,看似微小的防范,收益可能大于你的想象,能够让错误更容易发现,修改,并减少对已经编写代码的修改

2、如何使用防御式编程?

在开发阶段,建议不从产品角度考虑,建议让错误暴露的越明显越好,能更快的排查错误;在产品上线时,防御式编程的代码可能影响性能以及体验,需要适当修改,但是需要根据场景考虑,比如银行设备以及普通网站,不同产品,错误处理方式不一样;

隔离程序与参数,即对参数进行验证,使之能包容错误造成的损害,并进行适当处理;

3、如何对错误进行处理?处理的方式

需要根据实际场景,程序是更需要健壮性还是正确性,一般普通的消费产品更倾向于健壮性,但和数据相关,则更倾向于正确性;建议在架构设计上就决定好如何处理错误,是异常还是其他的方式。

4、关于异常

避免在构造和析构函数中使用异常;考虑创建一个集中的方式处理异常,能够为一些与异常有关的信息提供集中的存储;把项目中对异常的使用标准化,考虑创建抛出异常的基类,这样就能把记录日志、报告错误等操作集中起来并标准化;不滥用异常,应该在异常和其他错误处理手段进行权衡,如果某些错误能局部处理,那就局部处理它;

 

 

 

 

第10章 使用变量的一般事项(General Issues in Using Avriables)

初始化

在声明变量的时候初始化。

理想情况下,在靠近第一次使用变量的位置声明和定义改变量。

在可能的情况下使用final或者const。

作用域

使变量的引用局部化,减小变量的作用域:

  • 在循环开始之前再去初始化该循环里使用的变量,而不是在该循环所属的子程序的开始处初始化这些变量。

  • 直到变量即将被使用时再为其赋值。

  • 把相关语句放在一起,可能的情况下提取成单独的子程序。

  • 开始时采用最严格的可见性(比如设为private),然后根据需要扩展变量的作用域。

“方便性”和“智力可管理性”两种理念之间的区别,归根结底来源于侧重写程序还是读程序之间的区别。

每个变量只应该用于单一用途,且不应该有隐藏含义(比如当x大于5000时代表什么)。

posted @ 2020-11-12 12:42  大雄的脑袋  阅读(72)  评论(0编辑  收藏  举报