值的语义,如何落实为模块边界?
Hickey 强调不可变和语义透明;Bernhardt 展示以值作为交互边界,减少同步方法调用及测试替身的耦合。前者解释值的性质,后者给出组织代码的具体策略。
沿同一来源继续阅读
用户今天续费了,还能解释昨天那封催缴邮件吗? →一次判断要能重现,除了规则本身,还需要当时交给它的那份数据。查询模型之外,还要决定是否保留事实的时间 →DynamoDB 讲解要求先枚举访问模式,再按查询组织单表、索引和事务;Hickey 则强调事实包含时间,新事实不应让过去的事实变成错误或消失。连接这两点可以把存储设计从“怎样高效读当前实体”推进到“是否需要表达历史事实”,提示读者将时间与访问模式一并纳入建模。从不可变快照扩展到信息值的设计 →两者都明确把不可变性作为值的属性;The Value of Values 进一步突出语义透明、比较与跨边界共享。适用层次由进程内时间模型延伸到信息表达,而非立场改变。
对照原文
values are immutable right and values are semantically transparentwe now have values as boundaries.值并不自动保证整个系统纯函数化;I/O 仍留在外壳。两位讲者没有在这些片段中直接互相回应。