程序员修炼之道阅读笔记

第23节 断言式编程

1、如果它不可能发生,用断言确保它不会发生。

assert(string != NULL)

断言里写的为真的条件,当不为真时触发断言,程序退出。

2、断言检查的是决不应该发生的事情,而不是错误处理。

3、断言应该一直开着,不要在线上环境关掉它。

断言对应的是一种强提示,它迫使我们必须遵守。像是单元测试,我们通常都使用断言的形式进行检查。

第24节 何时使用异常

1、异常很少应作为程序的正常流程的一部分使用,异常应该保留给意外情况。如果移除了所有的异常处理器,代码就无法运行,那说明异常正在被用于非异常情况中。

2、是否应该使用异常取决于实际情况。比如打开文件,文件不存在,是否应该发生异常?如果文件应该在那里,那么异常就有正当理由。如果不确定文件是否在那里,返回错误就可以了。

第25节 怎样配平资源

1、对于资源(内存、事务、现成、文件、定时器等)的管理要有始有终,你分配了对应的资源,就需要考虑对应的解除逻辑。要有始有终。

2、嵌套的资源分配,应该使用与分配次序相反的顺序进行解除。

3、异常的配平需要避免违反 DRY 原则。例如文件打开的异常情况,会导致 try..catch 有两条路径,那如何避免在正常流程和 catch 流程都处理 error 情况呢?C++ 可以依赖对象自动析构的特性,Java 可以依赖 finally子句。

4、当无法配平资源时,需要设定一个规则,决定谁为某个聚集数据结构中的数据负责,以及如何负责。这里有点类似引用计数方案,无引用时释放。

5、自动化检查资源配平状态,可以依赖一些三方工具。

posted @ 2023-04-23 20:56  Weebles  阅读(12)  评论(0编辑  收藏  举报