核心问题
程序为什么本质上是逻辑表达?
工程困境
代码不是文字说明,而是机器会执行的命题集合。
if (order.status === "paid") {
ship(order)
}
这句话在逻辑上说:
如果订单已支付,则允许发货。
Bug 往往不是语法错,而是这个命题在某个场景下不成立。
思想模型
程序 = 条件 + 状态 + 转换 + 不变量。
你写的每个判断,都在定义什么情况下世界可以继续变化。
好判断
写业务逻辑前问:
前置条件是什么?
后置条件是什么?
哪些状态不允许?
哪些条件必须永远为真?
Atlas Action
找一个核心函数,给它补四行注释草稿:
requires:
ensures:
never:
invariant:
不一定提交,但要训练自己先想逻辑。
小结
代码不是步骤堆叠,而是关于系统何时为真的逻辑声明。