框架选择
选无聊且文档全的框架而非新颖聪明的。
为什么
框架是你每行代码的基底——它的 bug 成你的 bug、它的抽象成你的心智模型、它的升级路径成你的周末。无聊文档全的框架(Express、Spring、Django)有已知 bug(全找到)、已知模式(全 Stack Overflow)和长支持期。新颖框架有未知 bug、稀疏文档、可能 2 年弃。新颖对作者有趣对继承团队痛。框架选择应优化团队生产力和长寿,非作者好奇。
何时使用
服务创建时。2-4 小时评估。仅框架终期或阻关键功能时重访。
如何做
1. 列该语言候选框架(见 language-selection) 2. 每个打分: - 成熟:> 3 年、稳定 API、大规模生产用 - 文档:全、示例、活跃社区(Stack Overflow 标签) - 维护:近期发、响应维护者、安全补丁速度 - 招聘:能找到会的工程师吗? - 适配:匹配问题吗(web、CLI、批处理、实时)? 3. 淘汰成熟或维护低分——这些是取消资格 4. 余中偏最无聊(最多用户、最多文档、最少意外) 5. 前 2 各原型最险功能(各 1 天)确认适配 6. 决策;把理由和考虑备选记 ADR
示例
服务:内部管理 API(Go) 候选: - Gin:成熟(10 年)、文档优、社区大、无聊 ✓ - Echo:成熟、文档好、社区小 - Fiber:新颖(类 Express)、快、用户少、新 - net/http 标准库:最无聊、功能最少、最啰嗦 打分(成熟/文档/维护/招聘/适配,1-5): Gin: 5/5/5/5/5 = 25 Echo:5/4/5/4/5 = 23 Fiber:3/3/4/2/5 = 17 标准库:5/5/5/5/3 = 23 决策:Gin。最无聊、文档最好、最易招。 Fiber 的速度优势对内部管理 API 无关。
常见问题
- ⚠因"更现代"选新颖框架——现代意味未知 bug 和稀疏文档;无聊意味已解问题和 Stack Overflow 有帮。
最佳实践
- ✓偏团队已会框架——熟悉的生产力胜你须学的更好框架的理论优势。
- ✓选前查框架最后发版和 issue 响应——不维护的框架是负债非资产。