single-responsibility
单一职责
这个 skill-unit 处理的是“职责是否混在一起”问题。它不负责定义系统分层,而负责把文件、函数、类、模块收敛到一个稳定职责上。
核心原则
1. 职责可说清 —— 说不清,通常就是过重
- 一个文件、函数、类或模块,应该能用一句话说明自己负责什么。
- 如果解释一个单元时必须用“既负责 A,也负责 B,还顺便处理 C”,通常说明职责已经混杂。
- 名称与实际行为长期不一致,也是职责失焦的信号。
2. 变化原因单一 —— 不同变化面不要绑在一起
- 单一职责的本质不是“代码少”,而是“变化原因尽量单一”。
- 如果一段代码会因为不同角色、不同业务意图、不同技术原因频繁一起被改,就应考虑拆分。
- 验证、计算、格式化、IO、编排等不同变化面,不应长期绑定在同一职责里。
3. 边界先清 —— 先定职责,再定拆分方式
- 拆分不是为了把代码切碎,而是为了让边界更稳定。
- 先回答“这个单元真正负责什么”,再决定拆成几个文件、几个函数、几个模块。
- 如果拆分后边界仍然模糊,只是把混乱搬到更多地方。
4. 拆分有收益 —— 清晰度比数量更重要
- 更小不一定更好,关键是更清楚。
- 拆分后的单元应更容易命名、更容易测试、更容易定位修改原因。
- 如果拆分只增加跳转层级,却没有提升边界清晰度,就不值得做。
AI Agent 行为要求
默认适用场景
| 场景 | 最低要求 | 不该做什么 |
|---|---|---|
| 文件重构 | 判断文件是否承载多个不相关职责 | 只因为文件长就机械拆分 |
| 函数重构 | 判断是否混合了验证、计算、IO、格式化等职责 | 把一个清晰函数硬拆成很多碎片 |
| 模块设计 | 判断模块是否围绕稳定业务意图组织 | 用“可能复用”提前堆很多抽象层 |
| 代码审查 | 明确指出职责混杂点与拆分方向 | 只说“可以再优化” |
默认执行方式
- 先要求每个候选单元都能被一句话准确描述。
- 检查它是否承载了多个不同变化原因。
- 若职责混杂,先标出边界,再给拆分方案。
- 拆分时优先保持外部接口和阅读主路径稳定。
- 拆分后复核:职责更清楚了,而不是文件更多了。
典型职责混杂信号
- 一个函数同时做校验、执行、格式化和输出
- 一个文件同时放了不相关的工具函数、业务逻辑和外部适配
- 一个模块名字很大而泛,里面什么都装
- 一个类同时承担编排、状态管理、业务计算和基础设施细节
场景化展开
- 涉及文件与类边界时,读取
references/file-level.md - 涉及函数重构时,读取
references/function-level.md - 涉及模块与包边界时,读取
references/module-level.md
与其他 skill 的协同边界
- 与
architecture-governance:当问题已上升到分层、依赖方向和接口契约时联动,顺序为“先定大边界,再拆职责”。 - 与
file-guardrails:当文件超限的根因是职责混杂时联动,顺序为“先识别职责,再给拆分方案”。 - 与
core-first-simplicity:当职责混杂是因为顺手叠加了很多非核心能力时联动。
判断标准
- 是否能用一句话准确描述该单元职责。
- 是否存在多个独立变化原因被绑在一起。
- 拆分后是否更容易命名、测试和定位修改原因。
- 外部接口和主阅读路径是否仍然清晰。
- 是否避免了“为了拆而拆”的机械碎片化。
反模式
- 用一个
utils.py、service.py、manager.py承载大量无关职责。 - 一个函数既取数据、又验证、又计算、又输出。
- 为了追求“单一职责”把代码拆成大量难以追踪的小碎片。
- 拆分前不澄清职责边界,只按行数或感觉切文件。
- 名称长期不能准确反映行为,却继续往里面加功能。
参考资料
references/file-level.md- 文件与类边界的职责识别与拆分references/function-level.md- 函数职责混杂的常见模式与重构方式references/module-level.md- 模块边界、依赖关系与职责收敛
More from qiao-925/qiao-skills
agent-skill-rules
Agent Skills 开放标准与治理规则。用于 skill 的创建、修改、重构、迁移、审计与维护,并在创建前判断需求应落到自动化、项目级规则、通用或项目私有 skill 还是单次 prompt,提供平台无关的结构标准、frontmatter 规范、渐进式披露与质量门禁。
35python-coding-standards
Python 实现基线能力单元,帮助 Agent 在 Python 代码实现、修改、补全、重构与审查场景中,先对齐项目既有约定,再落实类型边界、日志纪律、命名与结构可读性,避免把个人偏好或项目私货写成通用规范。关键词:Python、编码规范、类型提示、日志、命名、代码结构、项目对齐。
23critical-thinking-guidance
规范 Agent 在解答前进行智能判断与思考引导,避免不必要的替代思考并保留用户主导权。适用于用户提问、方案咨询、学习交流等需要平衡效率与思考深度的场景。关键词:引导提问、智能判断、轻量引导、强制思考
21architecture-governance
架构治理能力单元,帮助 Agent 在架构评审、重构、新模块设计、分层边界调整、接口契约设计与项目初始化分析场景中,检查分层与依赖方向、变更影响面、接口契约与可替换性,避免跨层耦合、反向依赖与破坏性演进。关键词:架构治理、分层、依赖方向、影响面分析、接口契约、依赖注入、可插拔、重构。
19core-first-simplicity
核心优先的复杂度控制能力单元,帮助 Agent 在项目取舍、架构设计、模块重构、实现裁剪与方案收敛场景中,先识别主亮点、控制复杂度预算、稳定主路径、延后非核心扩张,避免过度设计与大而全实现。关键词:核心优先、复杂度控制、KISS、方案收敛、过度设计、主路径。
19python-uv-acceleration
Python 工具链加速能力单元,帮助 Agent 在 Python 项目创建虚拟环境、安装依赖、同步 requirements、替换 pip/venv 工作流时,优先使用 uv 提升速度与一致性,同时识别何时不应覆盖 poetry、pdm、hatch 等既有项目管理器。关键词:Python、uv、依赖安装、虚拟环境、pip 替代、venv 替代、requirements。
19