代码编写中的假设与全局状态处理
在代码编写过程中,我们常常会关注代码运行的性能成本,但其实假设也存在与之相关的成本,尤其是在代码的脆弱性方面。
1. 假设的成本与处理
在编写代码时,我们有时会做出一些假设。如果某个假设能带来显著的性能提升或极大地简化代码,那么它可能是值得的。但如果收益甚微,将假设融入代码所带来的成本可能会超过收益。
当我们决定在代码中做出假设时,要确保其他工程师不会因这个假设而陷入困境。通常有两种方法来实现这一点:
1. 使假设无法被打破 :编写代码时,让假设被打破时代码无法编译,以此确保假设始终成立。
2. 使用错误信号技术 :若无法使假设无法被打破,可编写代码检测假设是否被打破,并使用错误信号技术实现快速失败。
以 Article 类的 getImageSection() 函数为例,它假设一篇文章最多只有一个图片部分。代码如下:
class Article {
private List<Section> sections;
...
Section? getImageSection() {
// There should only ever be a maximum of one
// section within an article that contains images.
return sections #A
.filter(sec
超级会员免费看
订阅专栏 解锁全文
10万+

被折叠的 条评论
为什么被折叠?



