如何做好职责分离
- 从“怎么实现”到“怎么组合”
- 一体式思维:写一个函数完成所有功能
- 分离式思维:要设计几个组件,然后组合它们实现功能
- 从“功能优先”到“测试优先”
- 一体式思维:先实现功能,再考虑测试
- 分离式思维:先考虑怎么测试,倒推出职责分离
ripgrep
的分离式架构- cli参数 →
LowArgs
→HiArgs
- 搜索目标:分为文件发现和目标搜索
- 文件遍历再次分离:WalkDir(负责目录树形结构转为线性的Iter)→ WalkEventDir(负责发送事件)→ Walk(添加忽略规则)
- cli参数 →