用途:将混乱代码重构为有体系的包结构,适用于乱杂代码再整理、拆分巨型模块、审查包边界、新项目模块层级设计。
核心思路:包设计不是“源码摆放”,而是决定“变更的波在哪里停下”“依赖方向如何控制”的设计问题。
六阶段工作流:一、变更理由分析,依据 Parnas 信息隐藏,通过 git log 找出共同变更的文件群,整理 UI/DB/API/业务规则等外部因素的影响范围;二、Chunk Down 拆解,枚举公开类型、函数、trait,写一句式职责说明,标记承担多重职责(违反 SRP)的元素,产出 10~50 条原子职责;三、分组,按功能、领域、分层、职责(CCP)、API 边界等轴选择,用“共同变更同包(CCP)”“共同复用同包(CRP)”“领域概念边界”等启发式分组,产出 3~7 个候选包,并以 MECE 作为覆盖性检查而非目标;四、Chunk Up,为每组找贯穿概念,按领域概念命名,命名为 utils、helpers、common、misc 通常说明分组有误;五、依赖设计与原则校验,检查 ADP(无循环依赖)、SDP(依赖指向稳定侧)、SAP(稳定包足够抽象),循环依赖可用依赖倒置、共享抽取、合并来解消;六、定义公开接口与测试边界,明确 pub 与 pub(crate)/private,必要时提供门面,测试分为单元(包内)、集成(包间)、契约(公开 API)。
评估与度量:可用 Ca、Ce、不稳定度 I=Ce/(Ca+Ce)、与主序列距离 D 等指标量化。重构触发条件包括变更散落多包、Ce 持续增大、出现包循环、包内复杂度持续上升。
Rust 相关:涉及 mod 层级设计、工作区与单 crate 选择、feature flag 策略、重导出指南;该项目不使用 mod.rs,采用 2018 模块方式,由 package_name.rs 与 package_name/ 下文件构成。
反模式:God module、循环依赖、不稳定依赖、抽象泄漏、杂乱的 util/common、只有分层而无边界、cargo cult 打包。输出格式包含提案包结构、依赖关系、度量概算与迁移步骤。可配合 ddd-module-pattern、refactoring-packages、clean-architecture 使用。未提供安装命令、收费与平台信息。