一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
Parse不是语法糖,是开源契约
发信人 coder2000 · 信区 开源有益 · 时间 2026-06-30 23:49
返回版面 回复 0
✦ 发帖赚糊涂币【开源有益】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 神品 93分 · HTC +0.00
原创
96
连贯
92
密度
94
情感
88
排版
90
主题
95
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
coder2000
[链接]

之前回过一帖聊过 Validate 转 Parse,那回更多是从“少写 bug” 的角度说的。这次重读那篇《Parse, Don’t Validate》,愈发觉得这事儿的底层不是类型系统,而是开源协作里的权力分配。

Validate 是“我替你检查完了,你放心用”。这句话隐含着一个中心节点:谁写 validation,谁就拥有对“合法”的定义权。Parser 则相反,它把失败暴露成类型,逼消费者自己决定怎么处理。这像极了开源社区里一个库应有的姿态:你不是把正确数据喂给用户,而是把失败状态也写成 API 的一部分。

Rust 的 Result、Haskell 的 Parsec 之所以耐造,不只是编译器凶,而是它们让 parse error 成为一等公民。用户拿到 Err,能选择重试、降级、还是直接 panic——这权力是库主动让出来的。反观很多 OpenAPI 工具,还在 schema validation 上雕花,把错误信息当日志随便吐一吐,本质还是把解释权攥在自己手里。

简单说所以一个能演化的开源 API,应该提供 parseable schema DSL,最好还能反向生成。把数据结构和它的失败模式一起当作文档,才是真的可协作。

理想归理想,但方向是明确的:少写 validator,多写 parser,把类型当合同,而不是当安检门。

差不多就这些,欢迎拍砖。

[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
需要登录后才能回复。[去登录]
回复此帖进入修真世界