笔记
0工具
0此页用于记录用户反馈问题后的每一次改进
关于
“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
不想公开、只想临时给人看:点“分享”生成一条带密码和有效期的链接,到期自动失效,你也能随时撤销。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
趋势
hello-sdd:从零掌握规格驱动开发的实战教程
hello-sdd 是一个从零开始系统讲解 SDD(Spec-Driven Development,规格驱动开发)的中文实战教程项目,由知名开发者 mouredev 维护,用 Python 示例贯穿全流程。
为什么需要 SDD?—— 先看传统开发的痛点
在传统开发流程中,我们习惯先写代码,再补测试,最后写文档。但这种方式有几个根深蒂固的问题:
- 需求与代码脱节:产品经理写一份需求文档,开发照着理解写代码,测试照着需求写用例,三方对同一需求的理解经常出现偏差,最后上线时才发现功能与预期不符。
- 测试滞后:很多项目测试是在功能开发完成后才补写,导致测试覆盖不全,或者为了赶进度直接跳过测试。
- 文档过时:代码迭代频繁,但文档往往停留在初始版本,新同事接手时只能靠读代码猜逻辑,维护成本极高。
- 沟通成本高:前后端联调时,接口定义反复修改,每次都要口头沟通,容易遗漏。
SDD 的核心思想是:在写任何实现代码之前,先把需求转化为可执行的规格(Specification)。这个规格既是测试用例,也是文档,更是开发的唯一依据。代码只是规格的“实现细节”。
hello-sdd 是什么?
hello-sdd 是 mouredev 发起的一个免费课程,定位是“从零开始学 SDD”。它不是一个库或框架,而是一套完整的教学代码库 + 文档,包含:
- 一系列按章节组织的 Python 示例代码
- 每个示例都遵循 SDD 流程:先写规格(测试),再实现
- 配套的说明文档(Markdown),讲解每一步的思考过程
- 使用 pytest 作为测试框架,展示规格如何驱动实现
项目地址:https://github.com/mouredev/hello-sdd
快速上手:安装与第一个 SDD 示例
环境准备
需要 Python 3.8+,推荐使用虚拟环境:
bash
克隆项目
git clone https://github.com/mouredev/hello-sdd.git
cd hello-sdd
创建虚拟环境(可选但推荐)
python -m venv venv
source venv/bin/activate # Linux/macOS
或 venv\Scripts\activate # Windows
安装依赖(主要是 pytest)
pip install -r requirements.txt
第一个 SDD 示例:计算器
项目中有个典型的示例,展示如何用 SDD 写一个计算器。传统做法是先写 calculator.py,但 SDD 要求先写测试。
步骤 1:写规格(测试文件)
python
test_calculator.py
import pytest
from calculator import add, subtract
def test_add_positive_numbers():
assert add(2, 3) == 5
def test_add_negative_numbers():
assert add(-1, -2) == -3
def test_subtract_basic():
assert subtract(10, 4) == 6
def test_subtract_negative_result():
assert subtract(3, 10) == -7
步骤 2:运行测试,看到失败
bash
pytest test_calculator.py
输出:ModuleNotFoundError: No module named 'calculator'
这正是 SDD 的关键:先让测试失败,因为还没有实现。失败本身就是规格的一部分——它明确告诉我们“现在缺什么”。
步骤 3:实现最小代码让测试通过
python
calculator.py
def add(a, b):
return a + b
def subtract(a, b):
return a - b
步骤 4:再次运行测试,全部通过
bash
pytest test_calculator.py
输出:4 passed
看起来很简单?但这就是 SDD 的最小闭环。项目里更复杂的示例(如用户管理、API 模拟)会展示如何处理边界条件、异常、依赖注入等,但核心流程始终一致:规格先行,实现跟进,测试驱动。
核心亮点深度解析
1. 规格即文档,文档即真相
在 hello-sdd 中,每个功能模块的测试文件就是最权威的文档。新成员加入时,不需要阅读冗长的设计文档,直接看测试用例就能理解功能的行为边界。这解决了传统文档“写时过期”的问题。
2. 天然的回归保护
因为规格(测试)先于代码存在,每次修改代码后运行测试,就能立刻知道是否破坏了原有功能。这比事后补测试要可靠得多——因为事后补测试时,开发者往往会根据实现来“将就”测试,导致测试形同虚设。
3. 促进接口设计思考
写规格的过程,本质上是在思考“这个函数应该接受什么输入,返回什么输出,有哪些边界情况”。这强制开发者在写代码前先理清接口契约,避免“边写边想”导致的接口混乱。
4. 与 TDD 的关系
很多人问 SDD 和 TDD(测试驱动开发)有什么区别。hello-sdd 项目明确给出了解释:
- TDD 更关注“测试先行”,重心在测试代码本身,通常从单元测试开始。
- SDD 是更上层的概念,它强调“规格先行”,规格不一定是测试代码,可以是行为描述、契约、甚至是伪代码。测试只是规格的一种体现形式。
在 hello-sdd 中,SDD 的实践方式是用 pytest 作为规格载体,但 SDD 也可以用于设计 API 契约、数据库 schema 等非代码场景。
5. 完整的实战项目结构
项目不是零散示例,而是按真实项目的结构组织:
hello-sdd/
├── docs/ # 理论讲解,每个章节对应一个主题
├── examples/ # 按难度递增的示例代码
│ ├── 01_basics/ # 最基础的 SDD 演示
│ ├── 02_intermediate/ # 涉及异常、依赖
│ └── 03_advanced/ # 模拟真实业务场景
├── tests/ # 所有测试的汇总
└── requirements.txt
这种结构让学习者可以循序渐进,从“什么是规格”到“如何在大型项目中应用 SDD”。
适用场景
hello-sdd 最适合以下人群和场景:
- Python 开发者:想系统学习 SDD 方法论,但苦于没有好的中文教程。
- 测试工程师:想理解“测试先行”的底层逻辑,提升测试设计能力。
- 团队技术负责人:想在团队内推行规格驱动开发,需要一套可复制的培训材料。
- 个人项目维护者:想提高自己项目的可维护性,减少回归 bug。
- 教学场景:高校或培训机构教授软件工程实践时,可作为 SDD 的教学案例。
不适用场景:
- 如果你只关心性能优化或算法实现,SDD 的帮助有限。
- 如果团队完全没有测试习惯,直接引入 SDD 会阻力较大,建议先从 TDD 过渡。
与其他同类项目对比
| 对比项 | hello-sdd | Test-Driven Development with Python (书) | pytest 官方文档 |
|---|---|---|---|
| 侧重点 | SDD 方法论 + Python 实战 | TDD 实践 + Django Web 开发 | 测试框架用法 |
| 语言 | 中文 | 英文 | 英文 |
| 适合人群 | 零基础到中级 | 中级以上 | 有基础即可 |
| 代码风格 | 简洁、教学导向 | 真实项目导向 | 参考手册 |
| 是否免费 | 完全免费 | 付费书籍 | 免费 |
| 覆盖范围 | SDD 全流程 + 原理 + 示例 | 偏重 TDD 在 Web 开发中的运用 | 仅测试框架本身 |
相比其他资源,hello-sdd 的最大优势是:它把 SDD 从理论讲到了实践,而且全程中文,示例代码量适中,不会让初学者感到淹没在大量代码中。
另外,与一些只讲“测试先行”的教程不同,hello-sdd 强调规格的多种形式。比如在高级示例中,它展示了如何先用文字描述规格,再转化为测试代码,最后实现——这更接近真实工作中的流程。
项目维护与社区
mouredev 是西班牙开发者社区中非常活跃的人物,他的项目以高质量和高更新频率著称。hello-sdd 目前有 296 个 star,虽然不算多,但内容质量很高,每个 commit 都有清晰的说明。项目采用 MIT 协议,可以自由使用和修改。
值得注意的是,项目的文档和代码注释都是中文,这对中文开发者非常友好。虽然作者是西班牙人,但项目的中文本地化做得很好,这在开源项目中比较少见。
我的使用体验
我花了一个周末把整个项目过了一遍。最直观的感受是:它不像一个教程,更像一个思维训练营。每个示例都强迫你先思考“规格是什么”,而不是急着写代码。这种思维转换对习惯了“先写代码再补测试”的人来说,确实需要一点适应时间,但一旦养成习惯,代码质量会有明显提升。
有几个细节让我印象深刻:
- 失败测试的刻意展示:项目特意保留了一些“失败状态”的测试,让你看到规格先行时,测试失败是正常的、预期的,而不是错误。
- 边界条件的处理:在高级示例中,它展示了如何用 pytest 的
parametrize来覆盖大量边界条件,这比手写多个断言要优雅得多。 - 规格的演化:项目展示了当需求变化时,如何修改规格(测试),再修改实现。这模拟了真实开发中的迭代过程。
总结与建议
hello-sdd 是一个值得花时间学习的项目,尤其适合以下情况:
- 你写 Python 但从未认真写过测试。
- 你写过测试但总是“事后补”,想改变工作流。
- 你想向团队推广规格驱动开发,但需要一个可落地的参考。
- 你想理解“规格”和“测试”的本质区别,以及它们如何协作。
建议学习路径:先阅读 docs/ 下的理论部分,然后按顺序跑通 examples/ 中的代码,最后尝试用 SDD 方法重写一个自己以前的项目(比如一个简单的 CLI 工具),这样体会最深。