关于 ruby-refactor
ruby-refactor 是社区维护的 Ruby 应用重构指南,包含按影响排序的规则,帮助开发者和编码 Agent 改善结构、简化条件逻辑并采用 Ruby 惯用写法。
主要功能
- 018 个类别的 45 条优先级规则
- 02拆分结构与简化条件的建议
- 03降低耦合与管理依赖的规则
- 04Ruby 惯用法与值对象建议
- 05现代 Ruby 3.x 模式
适用场景
- 01重构冗长的方法或类
- 02简化嵌套条件逻辑
- 03减少组件间的耦合
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill ruby-refactor安装后在 Claude Code 中输入/ruby-refactor确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdcond-consolidate-duplicates.mdcond-decompose-conditional.mdcond-guard-clauses.mdcond-null-object.mdcond-pattern-matching.mdcond-replace-with-polymorphism.mdcouple-avoid-class-methods-domain.mdcouple-composition-over-inheritance.mdcouple-dependency-injection.mdcouple-feature-envy.mdcouple-law-of-demeter.mdcouple-tell-dont-ask.mddata-define-immutable.mddata-encapsulate-collection.mddata-replace-data-clump.mddata-separate-query-command.mddata-value-object.mdidiom-block-yield.mdidiom-duck-typing.mdidiom-implicit-return.mdidiom-keyword-arguments.mdidiom-predicate-methods.mdidiom-prefer-enumerable.mdidiom-respond-to-missing.mdmodern-deconstruct-keys.md详细介绍
社区 Ruby 重构最佳实践
由社区维护的 Ruby 应用综合重构指南。包含 8 个类别、45 条规则,并按影响力排序,帮助指导自动化重构和代码生成。
适用场景
在以下情况下参考这些指南:
- 重构 Ruby 代码,以降低复杂度并改进设计
- 从大型代码单元中提取方法、类或值对象
- 简化复杂条件判断和深层嵌套
- 减少类与模块之间的耦合
- 采用惯用的 Ruby 模式和现代 Ruby 3.x 特性
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 结构与分解 | 严重 | struct- |
| 2 | 条件简化 | 严重 | cond- |
| 3 | 耦合与依赖 | 高 | couple- |
| 4 | Ruby 惯用法 | 高 | idiom- |
| 5 | 数据与值对象 | 中高 | data- |
| 6 | 设计模式 | 中 | pattern- |
| 7 | 现代 Ruby 3.x | 中 | modern- |
| 8 | 命名与可读性 | 中低 | name- |
快速参考
1. 结构与分解(严重)
struct-extract-method- 将长方法提取为职责明确的单元struct-extract-class- 提取类以实现单一职责struct-parameter-object- 为过长的参数列表引入参数对象struct-compose-method- 将方法组合在同一抽象层级struct-replace-method-with-object- 用方法对象替换复杂方法struct-single-responsibility- 每个类只有一个变更理由struct-flatten-deep-nesting- 通过提前提取来扁平化深层嵌套
2. 条件简化(严重)
cond-guard-clauses- 用守卫子句替换嵌套条件判断cond-decompose-conditional- 将复杂布尔表达式提取为具名谓词cond-replace-with-polymorphism- 用多态替换 case/whencond-null-object- 用空对象替换 nil 检查cond-pattern-matching- 使用模式匹配处理结构条件cond-consolidate-duplicates- 合并重复的条件代码片段
3. 耦合与依赖(高)
couple-law-of-demeter- 通过委托贯彻迪米特法则couple-feature-envy- 移动方法以解决特性依恋couple-dependency-injection- 通过构造函数默认值注入依赖couple-composition-over-inheritance- 用组合对象替换混入couple-tell-dont-ask- 告诉对象要做什么,而非查询其状态couple-avoid-class-methods-domain- 避免在领域逻辑中使用类方法
4. Ruby 惯用法(高)
idiom-prefer-enumerable- 使用 map/select/reject 代替带累加器的 eachidiom-keyword-arguments- 使用关键字参数,提升清晰度idiom-duck-typing- 使用 respond_to? 而非 is_a? 进行类型检查idiom-predicate-methods- 布尔方法使用 ? 后缀命名idiom-respond-to-missing- 始终将 method_missing 与 respond_to_missing? 配对使用idiom-block-yield- 对于简单代码块,使用 yield 而非 block.callidiom-implicit-return- 省略最后一个表达式前的显式 return
5. 数据与值对象(中高)
data-value-object- 用值对象替代对基本类型的过度依赖data-define-immutable- 使用 Data.define 创建不可变值对象data-encapsulate-collection- 通过领域方法封装集合data-replace-data-clump- 用分组对象替代数据簇data-separate-query-command- 将查询方法与命令方法分离
6. 设计模式(中)
pattern-strategy- 将算法变体提取为策略对象pattern-factory- 使用工厂方法抽象对象创建过程pattern-template-method- 使用模板方法定义算法骨架pattern-decorator- 使用装饰器包装对象以增加行为pattern-null-object-protocol- 使用完整协议实现空对象
7. 现代 Ruby 3.x(中)
modern-pattern-matching- 使用 case/in 进行结构化模式匹配modern-deconstruct-keys- 实现 deconstruct_keys 以支持自定义模式匹配modern-endless-methods- 使用无终止符方法定义简化简单方法modern-hash-pattern-guard- 使用带守卫子句的模式匹配modern-rightward-assignment- 使用右向赋值处理流水线表达式
8. 命名与可读性(低中)
name-intention-revealing- 使用能体现意图的名称name-consistent-vocabulary- 在整个代码库中为每个概念使用统一词汇name-avoid-abbreviations- 除通用缩写外,将名称拼写完整name-rename-to-remove-comments- 通过重命名消除注释需求
使用方法
阅读单独的参考文件,了解详细说明和代码示例:
参考文件
| 文件 | 说明 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
评论
支持 Markdown