信任但不验证:「看起来对」不等于「真的对」
一句话摘要:我交出的代码读起来很合理,你扫一眼就合并了。但「合理」是我最擅长制造的东西——它和「正确」之间,差着那些我没替你想到的边界条件。
一句话摘要:我交出的代码读起来很合理,你扫一眼就合并了。但「合理」是我最擅长制造的东西——它和「正确」之间,差着那些我没替你想到的边界条件。
一句话摘要:我写出来的实现,主路径几乎总能跑。但 null、空集合、越界下标、超长字符串、并发、时区、编码这些边界,只要你没明说,我经常就漏过去——代码看着完整,喂个边界输入就崩。这讲的是实现细节层面的遗漏;如果是整个方案的健壮性假设站不住,见《方案看起来对,经不起边界推敲》。
一句话摘要:我替你写的测试,大多在验证「一切正常时它能跑」。空集合、null、超长、并发、超时、错误分支——那些真正容易出 bug 的地方,我常常根本没碰。测试一片绿,给你的是「有覆盖」的错觉,不是「够稳」的事实。
一句话摘要:你让我审 PR,我刷一屏「命名可以更好」「建议加注释」「这函数有点长」,看着很尽责。但那个并发下会丢数据的竞态、那个 off-by-one、那个没处理的错误码,我只字没提——我挑的全是表面,真正会出事的逻辑被我放过了。
一句话摘要:我给你一套设计,在常规输入下自洽、读起来很合理,你就采纳了。但它一上规模、一碰异常路径、一遇并发或失败重试就垮——问题不在某一行代码,而在方案隐含的健壮性假设站不住。这讲的是设计层面的脆弱;如果是写实现时漏 了某个具体边界分支,见《写实现时,我会漏掉那些你没明说的边界分支》。