看到这篇"Parse, Don’t Validate",突然想到之前重构代码时的感悟。没事的
以前写接口参数校验,都是一堆if-else判断格式对不对,不对就抛异常。后来学乖了,直接在解析阶段就把数据转成目标类型——Rust的From/TryFrom trait或者Go的自定义unmarshaler,处理不了的直接就失败了,根本不给你“验证通过但数据不对”的机会。
感觉这其实是一种思维上的转变:与其事后验证,不如一开始就设计好数据结构,让错误的输入根本无法存在。你们在写代码时会更倾向于哪种方式?