核心问题
如何把业务流程变成逻辑骨架?
练习一:银行转账
不变量:
总金额不变。
余额不能为负。
每次转账必须有 ledger entry。
守卫方式:
transaction
row lock
assert amount > 0
assert balance >= amount
ledger unique id
练习二:课程订单
状态机:
created -> paid -> access_granted
paid -> refunded -> access_revoked
created -> canceled
非法状态:
refunded 但没有 paid
access_granted 但 order 未 paid
access active 但 refund completed
Atlas Action
把你手头一个流程写成:
不变量
状态机
非法状态
并发风险
边界测试
小结
业务逻辑不是 if-else 的集合,而是一组必须守住的真值。