确定性的核心,非确定性的外壳

Deterministic Core, Non-Deterministic Shell

确定性的核心,非确定性的外壳

十四年前,Gary Bernhardt 提出了 Functional Core, Imperative Shell 架构,将业务逻辑与外部交互分离。文章指出,纯函数并非实现可测试性的唯一路径,关键在于“确定性”。即使在使用 C 等语言或状态机时,只要核心逻辑保持确定性,就能获得相同的测试优势。作者建议将随机数生成、网络通信等不可控因素移至“非确定性外壳”,并对遗留代码进行“确定性碎片整理”。通过识别并聚合隐藏的确定性状态机,我们能在复杂的代码库中逐步重建系统的可靠性与可维护性。

不要让人性化的完美成为良好的敌人!

同日更多故事

2026-09-21