知识卡片
约束提升代码可推理性
内容
给抽象概念主动施加约束,反而能增强对系统的推理能力,而不是限制自由。例如把”作业”限定为无副作用,就能保证同一作业可重复运行、多个作业并行时不会因某个作业出错而波及全局;反之,对随意编写、没有约束的代码块,开发者很难判断它”不会做什么”,因为缺乏约束意味着无法排除任何可能性。发散:这解释了为什么类型系统、不可变数据结构、纯函数这类”限制自由”的设计,长期看反而降低了系统的认知负担。
参考来源
- 位置:《恰如其分的软件架构》第1章《概述》1.3节《反思》(源文件:_epub-src/OEBPS/text00007.html)
- 结论依据:原文用Hadoop"作业"抽象为例,说明限制作业无副作用使其可重复运行、可并行且互不影响,并总结"开发者对系统主动施加一些约束,可以增强他们的推理能力"。
- 原始内容:"作业(job)"是抽象概念,意味着它将更多地遵循约束……如果限制为作业的执行不能有副作用,那么就可以重复运行相同的作业,而且在以并行方式运行多个作业时,还可避免因某个作业出问题而导致的系统瘫痪。