@bovinphang/frontend-craft 2.8.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +378 -339
  4. package/CHANGELOG.zh-CN.md +377 -338
  5. package/CONTRIBUTING.md +371 -361
  6. package/CONTRIBUTING.zh-CN.md +371 -361
  7. package/README.md +545 -493
  8. package/README.openclaw.md +359 -320
  9. package/README.openclaw.zh-CN.md +359 -320
  10. package/README.zh-CN.md +545 -493
  11. package/agents/fec-code-reviewer.md +24 -3
  12. package/agents/fec-debugger.md +1 -1
  13. package/agents/fec-doc-updater.md +1 -1
  14. package/agents/fec-e2e-runner.md +1 -1
  15. package/agents/fec-figma-implementer.md +1 -1
  16. package/agents/fec-performance-optimizer.md +1 -1
  17. package/agents/fec-refactor-cleaner.md +4 -1
  18. package/agents/fec-refactoring-expert.md +81 -0
  19. package/agents/fec-security-reviewer.md +17 -1
  20. package/agents/fec-test-planner.md +1 -1
  21. package/agents/fec-typescript-reviewer.md +24 -8
  22. package/agents/fec-ui-checker.md +11 -11
  23. package/commands/fec-debug.md +1 -1
  24. package/commands/fec-refactor-plan.md +17 -0
  25. package/commands/fec-refactor.md +18 -0
  26. package/commands/fec-review.md +40 -10
  27. package/commands/fec-scaffold.md +1 -1
  28. package/commands/fec-smell.md +17 -0
  29. package/commands/fec-tdd.md +6 -2
  30. package/dist/bin/frontend-craft.js +190 -38
  31. package/dist/hooks/fec-run-tests.js +5 -1
  32. package/dist/hooks/fec-session-start.js +1 -1
  33. package/docs/example-prompts.md +157 -140
  34. package/docs/ja-JP/README.md +534 -493
  35. package/docs/ko-KR/README.md +534 -493
  36. package/docs/project-structure.md +151 -131
  37. package/docs/refactoring/README.md +50 -0
  38. package/docs/refactoring/catalog.md +105 -0
  39. package/docs/refactoring/smell-refactoring-matrix.md +41 -0
  40. package/docs/review-and-diagram-workflows.md +39 -0
  41. package/docs/runtimes/antigravity.md +18 -10
  42. package/docs/runtimes/augment.md +18 -10
  43. package/docs/runtimes/claude.md +191 -177
  44. package/docs/runtimes/claude.zh-CN.md +189 -175
  45. package/docs/runtimes/cline.md +18 -10
  46. package/docs/runtimes/codebuddy.md +18 -10
  47. package/docs/runtimes/codex.md +18 -10
  48. package/docs/runtimes/compatibility.md +27 -0
  49. package/docs/runtimes/copilot.md +18 -10
  50. package/docs/runtimes/cursor.md +18 -10
  51. package/docs/runtimes/gemini.md +18 -10
  52. package/docs/runtimes/kilo.md +18 -10
  53. package/docs/runtimes/openclaw.md +18 -10
  54. package/docs/runtimes/opencode.md +18 -10
  55. package/docs/runtimes/qoder.md +18 -19
  56. package/docs/runtimes/trae.md +18 -10
  57. package/docs/runtimes/windsurf.md +18 -10
  58. package/docs/superpowers/plans/2026-09-26-content-integrity.md +145 -0
  59. package/docs/superpowers/plans/2026-09-26-diagram-quality.md +170 -0
  60. package/docs/superpowers/specs/2026-09-26-diagram-quality-design.md +77 -0
  61. package/docs/superpowers/specs/2026-09-26-project-optimization-design.md +95 -0
  62. package/docs/zh-CN/example-prompts.md +157 -140
  63. package/docs/zh-CN/project-structure.md +148 -128
  64. package/docs/zh-CN/review-and-diagram-workflows.md +39 -0
  65. package/docs/zh-TW/README.md +534 -493
  66. package/localized/zh-CN/agents/fec-code-reviewer.md +22 -3
  67. package/localized/zh-CN/agents/fec-refactor-cleaner.md +3 -0
  68. package/localized/zh-CN/agents/fec-refactoring-expert.md +53 -0
  69. package/localized/zh-CN/agents/fec-security-reviewer.md +16 -0
  70. package/localized/zh-CN/agents/fec-typescript-reviewer.md +23 -7
  71. package/localized/zh-CN/commands/fec-refactor-plan.md +15 -0
  72. package/localized/zh-CN/commands/fec-refactor.md +14 -0
  73. package/localized/zh-CN/commands/fec-review.md +40 -9
  74. package/localized/zh-CN/commands/fec-smell.md +13 -0
  75. package/localized/zh-CN/commands/fec-tdd.md +4 -0
  76. package/localized/zh-CN/skills/eval_queries.json +244 -0
  77. package/localized/zh-CN/skills/fec-code-review/SKILL.md +20 -1
  78. package/localized/zh-CN/skills/fec-code-review/references/report-template.md +11 -1
  79. package/localized/zh-CN/skills/fec-code-smells/SKILL.md +33 -0
  80. package/localized/zh-CN/skills/fec-code-smells/references/detection-guide.md +25 -0
  81. package/localized/zh-CN/skills/fec-code-smells/references/smell-catalog.md +817 -0
  82. package/localized/zh-CN/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
  83. package/localized/zh-CN/skills/fec-image-generation/SKILL.md +31 -1
  84. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/README.md +14 -0
  85. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/architecture.json +121 -0
  86. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/invalid-explicit.json +41 -0
  87. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/sequence.json +53 -0
  88. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/sequence.mmd +21 -0
  89. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/workflow.json +98 -0
  90. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/workflow.mmd +7 -0
  91. package/localized/zh-CN/skills/fec-image-generation/references/diagram-workflows.md +10 -3
  92. package/localized/zh-CN/skills/fec-image-generation/references/html-technical-diagrams.md +8 -1
  93. package/localized/zh-CN/skills/fec-image-generation/references/png-qa-autofix.md +9 -2
  94. package/localized/zh-CN/skills/fec-image-generation/scripts/diagram-browser.mjs +90 -0
  95. package/localized/zh-CN/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
  96. package/localized/zh-CN/skills/fec-image-generation/scripts/export-diagram.mjs +48 -80
  97. package/localized/zh-CN/skills/fec-image-generation/scripts/mermaid-render.mjs +64 -0
  98. package/localized/zh-CN/skills/fec-image-generation/scripts/png-qa.mjs +35 -4
  99. package/localized/zh-CN/skills/fec-image-generation/scripts/tech-diagram-render.mjs +193 -53
  100. package/localized/zh-CN/skills/fec-refactor-clean/SKILL.md +3 -0
  101. package/localized/zh-CN/skills/fec-refactoring/SKILL.md +83 -0
  102. package/localized/zh-CN/skills/fec-refactoring/references/principles.md +43 -0
  103. package/localized/zh-CN/skills/fec-refactoring/references/refactoring-vs-feature-change.md +25 -0
  104. package/localized/zh-CN/skills/fec-refactoring/references/when-to-refactor.md +17 -0
  105. package/localized/zh-CN/skills/fec-refactoring/references/workflow.md +59 -0
  106. package/localized/zh-CN/skills/fec-refactoring-api/SKILL.md +25 -0
  107. package/localized/zh-CN/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
  108. package/localized/zh-CN/skills/fec-refactoring-catalog/SKILL.md +21 -0
  109. package/localized/zh-CN/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
  110. package/localized/zh-CN/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
  111. package/localized/zh-CN/skills/fec-refactoring-catalog/references/selection-guide.md +41 -0
  112. package/localized/zh-CN/skills/fec-refactoring-control/SKILL.md +25 -0
  113. package/localized/zh-CN/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
  114. package/localized/zh-CN/skills/fec-refactoring-data/SKILL.md +25 -0
  115. package/localized/zh-CN/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
  116. package/localized/zh-CN/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
  117. package/localized/zh-CN/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
  118. package/localized/zh-CN/skills/fec-refactoring-functions/SKILL.md +25 -0
  119. package/localized/zh-CN/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
  120. package/localized/zh-CN/skills/fec-refactoring-inheritance/SKILL.md +25 -0
  121. package/localized/zh-CN/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
  122. package/localized/zh-CN/skills/fec-refactoring-move-features/SKILL.md +25 -0
  123. package/localized/zh-CN/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
  124. package/localized/zh-CN/skills/fec-refactoring-validation/SKILL.md +52 -0
  125. package/localized/zh-CN/skills/fec-refactoring-validation/references/behavior-preservation.md +15 -0
  126. package/localized/zh-CN/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +25 -0
  127. package/localized/zh-CN/skills/fec-security-review/SKILL.md +16 -0
  128. package/localized/zh-CN/skills/fec-security-review/references/report-template.md +10 -0
  129. package/localized/zh-CN/skills/fec-tdd-workflow/SKILL.md +3 -0
  130. package/localized/zh-CN/skills/metadata.json +408 -50
  131. package/localized/zh-CN/skills/relations.json +271 -3
  132. package/localized/zh-CN/templates/shared/rules/fec-agent-workflow.md +1 -0
  133. package/openclaw.plugin.json +2 -3
  134. package/package.json +27 -17
  135. package/skills/eval_queries.json +244 -0
  136. package/skills/fec-code-review/SKILL.md +20 -1
  137. package/skills/fec-code-review/references/report-template.md +11 -1
  138. package/skills/fec-code-smells/SKILL.md +33 -0
  139. package/skills/fec-code-smells/references/detection-guide.md +25 -0
  140. package/skills/fec-code-smells/references/smell-catalog.md +861 -0
  141. package/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
  142. package/skills/fec-data-fetching/SKILL.md +1 -1
  143. package/skills/fec-image-generation/SKILL.md +31 -1
  144. package/skills/fec-image-generation/assets/quality-examples/README.md +14 -0
  145. package/skills/fec-image-generation/assets/quality-examples/architecture.json +121 -0
  146. package/skills/fec-image-generation/assets/quality-examples/invalid-explicit.json +41 -0
  147. package/skills/fec-image-generation/assets/quality-examples/sequence.json +53 -0
  148. package/skills/fec-image-generation/assets/quality-examples/sequence.mmd +21 -0
  149. package/skills/fec-image-generation/assets/quality-examples/workflow.json +98 -0
  150. package/skills/fec-image-generation/assets/quality-examples/workflow.mmd +7 -0
  151. package/skills/fec-image-generation/references/diagram-workflows.md +10 -3
  152. package/skills/fec-image-generation/references/html-technical-diagrams.md +8 -1
  153. package/skills/fec-image-generation/references/png-qa-autofix.md +9 -2
  154. package/skills/fec-image-generation/scripts/diagram-browser.mjs +90 -0
  155. package/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
  156. package/skills/fec-image-generation/scripts/export-diagram.mjs +48 -80
  157. package/skills/fec-image-generation/scripts/mermaid-render.mjs +64 -0
  158. package/skills/fec-image-generation/scripts/png-qa.mjs +35 -4
  159. package/skills/fec-image-generation/scripts/tech-diagram-render.mjs +193 -53
  160. package/skills/fec-legacy-web-standard/SKILL.md +1 -1
  161. package/skills/fec-refactor-clean/SKILL.md +3 -0
  162. package/skills/fec-refactoring/SKILL.md +83 -0
  163. package/skills/fec-refactoring/references/principles.md +60 -0
  164. package/skills/fec-refactoring/references/refactoring-vs-feature-change.md +27 -0
  165. package/skills/fec-refactoring/references/when-to-refactor.md +31 -0
  166. package/skills/fec-refactoring/references/workflow.md +90 -0
  167. package/skills/fec-refactoring-api/SKILL.md +25 -0
  168. package/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
  169. package/skills/fec-refactoring-catalog/SKILL.md +28 -0
  170. package/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
  171. package/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
  172. package/skills/fec-refactoring-catalog/references/selection-guide.md +47 -0
  173. package/skills/fec-refactoring-control/SKILL.md +25 -0
  174. package/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
  175. package/skills/fec-refactoring-data/SKILL.md +25 -0
  176. package/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
  177. package/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
  178. package/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
  179. package/skills/fec-refactoring-functions/SKILL.md +25 -0
  180. package/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
  181. package/skills/fec-refactoring-inheritance/SKILL.md +25 -0
  182. package/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
  183. package/skills/fec-refactoring-move-features/SKILL.md +25 -0
  184. package/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
  185. package/skills/fec-refactoring-validation/SKILL.md +59 -0
  186. package/skills/fec-refactoring-validation/references/behavior-preservation.md +53 -0
  187. package/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +42 -0
  188. package/skills/fec-security-review/SKILL.md +16 -0
  189. package/skills/fec-security-review/references/report-template.md +10 -0
  190. package/skills/fec-tdd-workflow/SKILL.md +5 -1
  191. package/skills/metadata.json +434 -71
  192. package/skills/relations.json +264 -0
  193. package/templates/shared/rules/fec-agent-workflow.md +1 -0
  194. package/docs/superpowers/plans/2026-05-29-fec-debug.md +0 -491
  195. package/docs/superpowers/specs/2026-05-29-fec-debug-design.md +0 -340
@@ -0,0 +1,496 @@
1
+ # API 类重构
2
+
3
+ 这些卡片以用户提供的标准重构目录为知识基线,转换为面向前端 Agent 的操作指南。保留标准 ID/中英文名称,框架适配和示例为项目原创内容。
4
+
5
+ ## RF-SEPARATE-QUERY-FROM-MODIFIER — 将查询函数和修改函数分离(Separate Query from Modifier)
6
+
7
+ ### 意图
8
+ 把“获取信息”和“修改状态”拆开,让读取不再隐式触发副作用。
9
+
10
+ ### 典型信号
11
+ - 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
12
+
13
+ ### 不适用条件
14
+ - 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
15
+
16
+ ### 前置条件
17
+ - 已明确当前可观察行为、受影响调用者和公共契约。
18
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
19
+
20
+ ### 操作步骤
21
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
22
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
23
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
24
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
25
+
26
+ ### 行为保持检查点
27
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
28
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
29
+
30
+ ### 相关坏味道
31
+ - `SMELL-MUTABLE-DATA`
32
+
33
+ ### 常见组合
34
+ - 不建立固定流水线;下一步必须重新依据证据选择。
35
+
36
+ ### JavaScript 注意事项
37
+ - 保持回调 arity、`this`、默认值、异常和副作用时序。
38
+
39
+ ### TypeScript 注意事项
40
+ - 导出函数签名、泛型、overload、DTO 和公共类型都属于兼容契约。
41
+
42
+ ### React 注意事项
43
+ - Props/callback、Hook、loader/action、router 和 context API 可能是公共边界。
44
+
45
+ ### Vue 注意事项
46
+ - props/emits、composable 返回、Pinia action、route contract 和 injection key 可能是公共边界。
47
+
48
+ ### Frontend-Craft 前端适配
49
+ - 优先显式、可测试依赖;Command 只有在 undo/queue/retry/audit/复杂生命周期有价值时才值得引入。
50
+
51
+ ### 原创前端变换示例
52
+ - 把“Separate Query from Modifier”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
53
+
54
+ ## RF-PARAMETERIZE-FUNCTION — 函数参数化(Parameterize Function)
55
+
56
+ ### 意图
57
+ 把仅在某个显式值上不同的重复函数合成一个参数化函数。
58
+
59
+ ### 典型信号
60
+ - 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
61
+
62
+ ### 不适用条件
63
+ - 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
64
+
65
+ ### 前置条件
66
+ - 已明确当前可观察行为、受影响调用者和公共契约。
67
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
68
+
69
+ ### 操作步骤
70
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
71
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
72
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
73
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
74
+
75
+ ### 行为保持检查点
76
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
77
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
78
+
79
+ ### 相关坏味道
80
+ - 不要求先存在某一种固定坏味道;以具体结构证据为准。
81
+
82
+ ### 常见组合
83
+ - 不建立固定流水线;下一步必须重新依据证据选择。
84
+
85
+ ### JavaScript 注意事项
86
+ - 保持回调 arity、`this`、默认值、异常和副作用时序。
87
+
88
+ ### TypeScript 注意事项
89
+ - 导出函数签名、泛型、overload、DTO 和公共类型都属于兼容契约。
90
+
91
+ ### React 注意事项
92
+ - Props/callback、Hook、loader/action、router 和 context API 可能是公共边界。
93
+
94
+ ### Vue 注意事项
95
+ - props/emits、composable 返回、Pinia action、route contract 和 injection key 可能是公共边界。
96
+
97
+ ### Frontend-Craft 前端适配
98
+ - 优先显式、可测试依赖;Command 只有在 undo/queue/retry/audit/复杂生命周期有价值时才值得引入。
99
+
100
+ ### 原创前端变换示例
101
+ - 把“Parameterize Function”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
102
+
103
+ ## RF-REMOVE-FLAG-ARGUMENT — 移除标记参数(Remove Flag Argument)
104
+
105
+ ### 意图
106
+ 把用于选择行为的 flag 参数替换为意图明确的操作;普通领域 boolean 不属于行为 flag。
107
+
108
+ ### 典型信号
109
+ - boolean/enum 参数并非普通数据,而是在指挥函数选择不同业务行为。
110
+
111
+ ### 不适用条件
112
+ - 参数只是领域数据,而不是选择函数行为的控制指令时,不应机械拆 API。
113
+
114
+ ### 前置条件
115
+ - 已明确当前可观察行为、受影响调用者和公共契约。
116
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
117
+
118
+ ### 操作步骤
119
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
120
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
121
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
122
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
123
+
124
+ ### 行为保持检查点
125
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
126
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
127
+
128
+ ### 相关坏味道
129
+ - `SMELL-LONG-PARAMETER-LIST`
130
+
131
+ ### 常见组合
132
+ - 不建立固定流水线;下一步必须重新依据证据选择。
133
+
134
+ ### JavaScript 注意事项
135
+ - 保持回调 arity、`this`、默认值、异常和副作用时序。
136
+
137
+ ### TypeScript 注意事项
138
+ - 导出函数签名、泛型、overload、DTO 和公共类型都属于兼容契约。
139
+
140
+ ### React 注意事项
141
+ - Props/callback、Hook、loader/action、router 和 context API 可能是公共边界。
142
+
143
+ ### Vue 注意事项
144
+ - props/emits、composable 返回、Pinia action、route contract 和 injection key 可能是公共边界。
145
+
146
+ ### Frontend-Craft 前端适配
147
+ - 优先显式、可测试依赖;Command 只有在 undo/queue/retry/audit/复杂生命周期有价值时才值得引入。
148
+
149
+ ### 原创前端变换示例
150
+ - 把“Remove Flag Argument”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
151
+
152
+ ## RF-PRESERVE-WHOLE-OBJECT — 保持对象完整(Preserve Whole Object)
153
+
154
+ ### 意图
155
+ 当多个参数本就来自同一对象时,传递对象或窄接口,而不是先拆字段再传入。
156
+
157
+ ### 典型信号
158
+ - 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
159
+
160
+ ### 不适用条件
161
+ - 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
162
+
163
+ ### 前置条件
164
+ - 已明确当前可观察行为、受影响调用者和公共契约。
165
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
166
+
167
+ ### 操作步骤
168
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
169
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
170
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
171
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
172
+
173
+ ### 行为保持检查点
174
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
175
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
176
+
177
+ ### 相关坏味道
178
+ - `SMELL-LONG-FUNCTION`
179
+ - `SMELL-LONG-PARAMETER-LIST`
180
+ - `SMELL-DATA-CLUMPS`
181
+
182
+ ### 常见组合
183
+ - 不建立固定流水线;下一步必须重新依据证据选择。
184
+
185
+ ### JavaScript 注意事项
186
+ - 保持回调 arity、`this`、默认值、异常和副作用时序。
187
+
188
+ ### TypeScript 注意事项
189
+ - 导出函数签名、泛型、overload、DTO 和公共类型都属于兼容契约。
190
+
191
+ ### React 注意事项
192
+ - Props/callback、Hook、loader/action、router 和 context API 可能是公共边界。
193
+
194
+ ### Vue 注意事项
195
+ - props/emits、composable 返回、Pinia action、route contract 和 injection key 可能是公共边界。
196
+
197
+ ### Frontend-Craft 前端适配
198
+ - 优先显式、可测试依赖;Command 只有在 undo/queue/retry/audit/复杂生命周期有价值时才值得引入。
199
+
200
+ ### 原创前端变换示例
201
+ - 把“Preserve Whole Object”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
202
+
203
+ ## RF-REPLACE-PARAMETER-WITH-QUERY — 以查询取代参数(Replace Parameter with Query)
204
+
205
+ ### 意图
206
+ 当函数可以从恰当且稳定的来源获得同一值时,去掉冗余参数。
207
+
208
+ ### 典型信号
209
+ - 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
210
+
211
+ ### 不适用条件
212
+ - 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
213
+
214
+ ### 前置条件
215
+ - 已明确当前可观察行为、受影响调用者和公共契约。
216
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
217
+
218
+ ### 操作步骤
219
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
220
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
221
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
222
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
223
+
224
+ ### 行为保持检查点
225
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
226
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
227
+
228
+ ### 相关坏味道
229
+ - `SMELL-LONG-PARAMETER-LIST`
230
+
231
+ ### 常见组合
232
+ - 不建立固定流水线;下一步必须重新依据证据选择。
233
+
234
+ ### JavaScript 注意事项
235
+ - 保持回调 arity、`this`、默认值、异常和副作用时序。
236
+
237
+ ### TypeScript 注意事项
238
+ - 导出函数签名、泛型、overload、DTO 和公共类型都属于兼容契约。
239
+
240
+ ### React 注意事项
241
+ - Props/callback、Hook、loader/action、router 和 context API 可能是公共边界。
242
+
243
+ ### Vue 注意事项
244
+ - props/emits、composable 返回、Pinia action、route contract 和 injection key 可能是公共边界。
245
+
246
+ ### Frontend-Craft 前端适配
247
+ - 优先显式、可测试依赖;Command 只有在 undo/queue/retry/audit/复杂生命周期有价值时才值得引入。
248
+
249
+ ### 原创前端变换示例
250
+ - 把“Replace Parameter with Query”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
251
+
252
+ ## RF-REPLACE-QUERY-WITH-PARAMETER — 以参数取代查询(Replace Query with Parameter)
253
+
254
+ ### 意图
255
+ 把隐藏查询依赖变为显式参数,提高纯度、可复用性和可测试性。
256
+
257
+ ### 典型信号
258
+ - 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
259
+
260
+ ### 不适用条件
261
+ - 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
262
+
263
+ ### 前置条件
264
+ - 已明确当前可观察行为、受影响调用者和公共契约。
265
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
266
+
267
+ ### 操作步骤
268
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
269
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
270
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
271
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
272
+
273
+ ### 行为保持检查点
274
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
275
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
276
+
277
+ ### 相关坏味道
278
+ - 不要求先存在某一种固定坏味道;以具体结构证据为准。
279
+
280
+ ### 常见组合
281
+ - 不建立固定流水线;下一步必须重新依据证据选择。
282
+
283
+ ### JavaScript 注意事项
284
+ - 保持回调 arity、`this`、默认值、异常和副作用时序。
285
+
286
+ ### TypeScript 注意事项
287
+ - 导出函数签名、泛型、overload、DTO 和公共类型都属于兼容契约。
288
+
289
+ ### React 注意事项
290
+ - Props/callback、Hook、loader/action、router 和 context API 可能是公共边界。
291
+
292
+ ### Vue 注意事项
293
+ - props/emits、composable 返回、Pinia action、route contract 和 injection key 可能是公共边界。
294
+
295
+ ### Frontend-Craft 前端适配
296
+ - 优先显式、可测试依赖;Command 只有在 undo/queue/retry/audit/复杂生命周期有价值时才值得引入。
297
+
298
+ ### 原创前端变换示例
299
+ - 把“Replace Query with Parameter”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
300
+
301
+ ## RF-REMOVE-SETTING-METHOD — 移除设值函数(Remove Setting Method)
302
+
303
+ ### 意图
304
+ 对于创建后不应再改变的状态,移除 setter 并把初始化放到构造/工厂阶段。
305
+
306
+ ### 典型信号
307
+ - 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
308
+
309
+ ### 不适用条件
310
+ - 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
311
+
312
+ ### 前置条件
313
+ - 已明确当前可观察行为、受影响调用者和公共契约。
314
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
315
+
316
+ ### 操作步骤
317
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
318
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
319
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
320
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
321
+
322
+ ### 行为保持检查点
323
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
324
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
325
+
326
+ ### 相关坏味道
327
+ - `SMELL-MUTABLE-DATA`
328
+ - `SMELL-DATA-CLASS`
329
+
330
+ ### 常见组合
331
+ - 不建立固定流水线;下一步必须重新依据证据选择。
332
+
333
+ ### JavaScript 注意事项
334
+ - 保持回调 arity、`this`、默认值、异常和副作用时序。
335
+
336
+ ### TypeScript 注意事项
337
+ - 导出函数签名、泛型、overload、DTO 和公共类型都属于兼容契约。
338
+
339
+ ### React 注意事项
340
+ - Props/callback、Hook、loader/action、router 和 context API 可能是公共边界。
341
+
342
+ ### Vue 注意事项
343
+ - props/emits、composable 返回、Pinia action、route contract 和 injection key 可能是公共边界。
344
+
345
+ ### Frontend-Craft 前端适配
346
+ - 优先显式、可测试依赖;Command 只有在 undo/queue/retry/audit/复杂生命周期有价值时才值得引入。
347
+
348
+ ### 原创前端变换示例
349
+ - 把“Remove Setting Method”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
350
+
351
+ ## RF-REPLACE-CONSTRUCTOR-WITH-FACTORY-FUNCTION — 以工厂函数取代构造函数(Replace Constructor with Factory Function)
352
+
353
+ ### 意图
354
+ 当创建过程包含选择、规范化、缓存或需要更明确名称时,用工厂函数表达创建策略。
355
+
356
+ ### 典型信号
357
+ - 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
358
+
359
+ ### 不适用条件
360
+ - 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
361
+
362
+ ### 前置条件
363
+ - 已明确当前可观察行为、受影响调用者和公共契约。
364
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
365
+
366
+ ### 操作步骤
367
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
368
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
369
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
370
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
371
+
372
+ ### 行为保持检查点
373
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
374
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
375
+
376
+ ### 相关坏味道
377
+ - 不要求先存在某一种固定坏味道;以具体结构证据为准。
378
+
379
+ ### 常见组合
380
+ - 不建立固定流水线;下一步必须重新依据证据选择。
381
+
382
+ ### JavaScript 注意事项
383
+ - 保持回调 arity、`this`、默认值、异常和副作用时序。
384
+
385
+ ### TypeScript 注意事项
386
+ - 导出函数签名、泛型、overload、DTO 和公共类型都属于兼容契约。
387
+
388
+ ### React 注意事项
389
+ - Props/callback、Hook、loader/action、router 和 context API 可能是公共边界。
390
+
391
+ ### Vue 注意事项
392
+ - props/emits、composable 返回、Pinia action、route contract 和 injection key 可能是公共边界。
393
+
394
+ ### Frontend-Craft 前端适配
395
+ - 优先显式、可测试依赖;Command 只有在 undo/queue/retry/audit/复杂生命周期有价值时才值得引入。
396
+
397
+ ### 原创前端变换示例
398
+ - 把“Replace Constructor with Factory Function”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
399
+
400
+ ## RF-REPLACE-FUNCTION-WITH-COMMAND — 以命令取代函数(Replace Function with Command)
401
+
402
+ ### 意图
403
+ 只有当操作确实需要状态、undo、queue、retry、audit 或复杂生命周期时,才把函数提升为命令/执行上下文。
404
+
405
+ ### 典型信号
406
+ - 一个操作确实需要持有跨步骤状态,或需要 undo、queue、retry、audit、取消/进度等生命周期。
407
+
408
+ ### 不适用条件
409
+ - 简单纯函数没有状态或生命周期价值时,不引入命令对象。
410
+
411
+ ### 前置条件
412
+ - 已明确当前可观察行为、受影响调用者和公共契约。
413
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
414
+
415
+ ### 操作步骤
416
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
417
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
418
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
419
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
420
+
421
+ ### 行为保持检查点
422
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
423
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
424
+
425
+ ### 相关坏味道
426
+ - `SMELL-LONG-FUNCTION`
427
+
428
+ ### 常见组合
429
+ - 不建立固定流水线;下一步必须重新依据证据选择。
430
+
431
+ ### JavaScript 注意事项
432
+ - 保持回调 arity、`this`、默认值、异常和副作用时序。
433
+
434
+ ### TypeScript 注意事项
435
+ - 导出函数签名、泛型、overload、DTO 和公共类型都属于兼容契约。
436
+
437
+ ### React 注意事项
438
+ - Props/callback、Hook、loader/action、router 和 context API 可能是公共边界。
439
+
440
+ ### Vue 注意事项
441
+ - props/emits、composable 返回、Pinia action、route contract 和 injection key 可能是公共边界。
442
+
443
+ ### Frontend-Craft 前端适配
444
+ - 优先显式、可测试依赖;Command 只有在 undo/queue/retry/audit/复杂生命周期有价值时才值得引入。
445
+
446
+ ### 原创前端变换示例
447
+ - 复杂上传流程包含 retry、progress、cancel、audit 时,可由上传命令/会话对象持有生命周期状态。
448
+
449
+ ## RF-REPLACE-COMMAND-WITH-FUNCTION — 以函数取代命令(Replace Command with Function)
450
+
451
+ ### 意图
452
+ 当命令对象已经没有值得保留的状态或生命周期时,将其收敛为普通函数。
453
+
454
+ ### 典型信号
455
+ - 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
456
+
457
+ ### 不适用条件
458
+ - 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
459
+
460
+ ### 前置条件
461
+ - 已明确当前可观察行为、受影响调用者和公共契约。
462
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
463
+
464
+ ### 操作步骤
465
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
466
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
467
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
468
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
469
+
470
+ ### 行为保持检查点
471
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
472
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
473
+
474
+ ### 相关坏味道
475
+ - 不要求先存在某一种固定坏味道;以具体结构证据为准。
476
+
477
+ ### 常见组合
478
+ - 不建立固定流水线;下一步必须重新依据证据选择。
479
+
480
+ ### JavaScript 注意事项
481
+ - 保持回调 arity、`this`、默认值、异常和副作用时序。
482
+
483
+ ### TypeScript 注意事项
484
+ - 导出函数签名、泛型、overload、DTO 和公共类型都属于兼容契约。
485
+
486
+ ### React 注意事项
487
+ - Props/callback、Hook、loader/action、router 和 context API 可能是公共边界。
488
+
489
+ ### Vue 注意事项
490
+ - props/emits、composable 返回、Pinia action、route contract 和 injection key 可能是公共边界。
491
+
492
+ ### Frontend-Craft 前端适配
493
+ - 优先显式、可测试依赖;Command 只有在 undo/queue/retry/audit/复杂生命周期有价值时才值得引入。
494
+
495
+ ### 原创前端变换示例
496
+ - 把“Replace Command with Function”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: fec-refactoring-catalog
3
+ description: 已经有结构问题证据,需要在多种保持行为的重构手法之间比较前置条件、选择最小安全方案,或决定多个重构步骤的合理先后关系时。
4
+ ---
5
+
6
+ # 重构目录选择
7
+
8
+ ## 概览
9
+ 把完整重构目录作为决策辅助,而不是自动套用的配方。只有当证据、前置条件和行为契约匹配时,才选择最小可验证的手法。
10
+
11
+ ## 工作流
12
+ 1. 在[重构目录索引](references/catalog-index.md)定位标准手法。
13
+ 2. 若从坏味道或症状出发,使用[选择指南](references/selection-guide.md)比较成因和候选手法。
14
+ 3. 若需要多个步骤,使用[组合指南](references/composition-guide.md)只安排当前代码真正需要的前置关系。
15
+ 4. 确定手法后再按需加载对应 family 的详细资料。
16
+
17
+ ## 选择规则
18
+ - 一个坏味道可能对应多个候选,先确认真实成因。
19
+ - 优先可回滚、局部、小范围的变换,而不是直接大改架构。
20
+ - 执行前检查公共 API、路由、状态所有权、异步/生命周期、持久化和 SSR 边界。
21
+ - 组合关系都是有条件的,不是强制流水线。
@@ -0,0 +1,99 @@
1
+ # 重构目录索引
2
+
3
+ 以下 61 个稳定 ID 对应用户资料第 6~12 章的完整重构目录。详细机制放在各 family Reference 中,按需加载。
4
+
5
+ ## Functions — 11
6
+
7
+ | ID | 中文标准名 | English | Family | Detail |
8
+ | --- | --- | --- | --- | --- |
9
+ | `RF-EXTRACT-FUNCTION` | 提炼函数 | Extract Function | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
10
+ | `RF-INLINE-FUNCTION` | 内联函数 | Inline Function | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
11
+ | `RF-EXTRACT-VARIABLE` | 提炼变量 | Extract Variable | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
12
+ | `RF-INLINE-VARIABLE` | 内联变量 | Inline Variable | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
13
+ | `RF-CHANGE-FUNCTION-DECLARATION` | 改变函数声明 | Change Function Declaration | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
14
+ | `RF-ENCAPSULATE-VARIABLE` | 封装变量 | Encapsulate Variable | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
15
+ | `RF-RENAME-VARIABLE` | 变量改名 | Rename Variable | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
16
+ | `RF-INTRODUCE-PARAMETER-OBJECT` | 引入参数对象 | Introduce Parameter Object | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
17
+ | `RF-COMBINE-FUNCTIONS-INTO-CLASS` | 函数组合成类 | Combine Functions into Class | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
18
+ | `RF-COMBINE-FUNCTIONS-INTO-TRANSFORM` | 函数组合成变换 | Combine Functions into Transform | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
19
+ | `RF-SPLIT-PHASE` | 拆分阶段 | Split Phase | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
20
+
21
+ ## Encapsulation — 9
22
+
23
+ | ID | 中文标准名 | English | Family | Detail |
24
+ | --- | --- | --- | --- | --- |
25
+ | `RF-ENCAPSULATE-RECORD` | 封装记录 | Encapsulate Record | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
26
+ | `RF-ENCAPSULATE-COLLECTION` | 封装集合 | Encapsulate Collection | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
27
+ | `RF-REPLACE-PRIMITIVE-WITH-OBJECT` | 以对象取代基本类型 | Replace Primitive with Object | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
28
+ | `RF-REPLACE-TEMP-WITH-QUERY` | 以查询取代临时变量 | Replace Temp with Query | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
29
+ | `RF-EXTRACT-CLASS` | 提炼类 | Extract Class | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
30
+ | `RF-INLINE-CLASS` | 内联类 | Inline Class | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
31
+ | `RF-HIDE-DELEGATE` | 隐藏委托关系 | Hide Delegate | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
32
+ | `RF-REMOVE-MIDDLE-MAN` | 移除中间人 | Remove Middle Man | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
33
+ | `RF-SUBSTITUTE-ALGORITHM` | 替换算法 | Substitute Algorithm | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
34
+
35
+ ## Moving Features — 9
36
+
37
+ | ID | 中文标准名 | English | Family | Detail |
38
+ | --- | --- | --- | --- | --- |
39
+ | `RF-MOVE-FUNCTION` | 搬移函数 | Move Function | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
40
+ | `RF-MOVE-FIELD` | 搬移字段 | Move Field | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
41
+ | `RF-MOVE-STATEMENTS-INTO-FUNCTION` | 搬移语句到函数 | Move Statements into Function | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
42
+ | `RF-MOVE-STATEMENTS-TO-CALLERS` | 搬移语句到调用者 | Move Statements to Callers | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
43
+ | `RF-REPLACE-INLINE-CODE-WITH-FUNCTION-CALL` | 以函数调用取代内联代码 | Replace Inline Code with Function Call | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
44
+ | `RF-SLIDE-STATEMENTS` | 移动语句 | Slide Statements | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
45
+ | `RF-SPLIT-LOOP` | 拆分循环 | Split Loop | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
46
+ | `RF-REPLACE-LOOP-WITH-PIPELINE` | 以管道取代循环 | Replace Loop with Pipeline | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
47
+ | `RF-REMOVE-DEAD-CODE` | 移除死代码 | Remove Dead Code | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
48
+
49
+ ## Data — 5
50
+
51
+ | ID | 中文标准名 | English | Family | Detail |
52
+ | --- | --- | --- | --- | --- |
53
+ | `RF-SPLIT-VARIABLE` | 拆分变量 | Split Variable | `data` | [Detail](../../fec-refactoring-data/references/data-refactorings.md) |
54
+ | `RF-RENAME-FIELD` | 字段改名 | Rename Field | `data` | [Detail](../../fec-refactoring-data/references/data-refactorings.md) |
55
+ | `RF-REPLACE-DERIVED-VARIABLE-WITH-QUERY` | 以查询取代派生变量 | Replace Derived Variable with Query | `data` | [Detail](../../fec-refactoring-data/references/data-refactorings.md) |
56
+ | `RF-CHANGE-REFERENCE-TO-VALUE` | 将引用对象改为值对象 | Change Reference to Value | `data` | [Detail](../../fec-refactoring-data/references/data-refactorings.md) |
57
+ | `RF-CHANGE-VALUE-TO-REFERENCE` | 将值对象改为引用对象 | Change Value to Reference | `data` | [Detail](../../fec-refactoring-data/references/data-refactorings.md) |
58
+
59
+ ## Conditional Logic — 6
60
+
61
+ | ID | 中文标准名 | English | Family | Detail |
62
+ | --- | --- | --- | --- | --- |
63
+ | `RF-DECOMPOSE-CONDITIONAL` | 分解条件表达式 | Decompose Conditional | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
64
+ | `RF-CONSOLIDATE-CONDITIONAL-EXPRESSION` | 合并条件表达式 | Consolidate Conditional Expression | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
65
+ | `RF-REPLACE-NESTED-CONDITIONAL-WITH-GUARD-CLAUSES` | 以卫语句取代嵌套条件表达式 | Replace Nested Conditional with Guard Clauses | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
66
+ | `RF-REPLACE-CONDITIONAL-WITH-POLYMORPHISM` | 以多态取代条件表达式 | Replace Conditional with Polymorphism | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
67
+ | `RF-INTRODUCE-SPECIAL-CASE` | 引入特例 | Introduce Special Case | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
68
+ | `RF-INTRODUCE-ASSERTION` | 引入断言 | Introduce Assertion | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
69
+
70
+ ## API — 10
71
+
72
+ | ID | 中文标准名 | English | Family | Detail |
73
+ | --- | --- | --- | --- | --- |
74
+ | `RF-SEPARATE-QUERY-FROM-MODIFIER` | 将查询函数和修改函数分离 | Separate Query from Modifier | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
75
+ | `RF-PARAMETERIZE-FUNCTION` | 函数参数化 | Parameterize Function | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
76
+ | `RF-REMOVE-FLAG-ARGUMENT` | 移除标记参数 | Remove Flag Argument | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
77
+ | `RF-PRESERVE-WHOLE-OBJECT` | 保持对象完整 | Preserve Whole Object | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
78
+ | `RF-REPLACE-PARAMETER-WITH-QUERY` | 以查询取代参数 | Replace Parameter with Query | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
79
+ | `RF-REPLACE-QUERY-WITH-PARAMETER` | 以参数取代查询 | Replace Query with Parameter | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
80
+ | `RF-REMOVE-SETTING-METHOD` | 移除设值函数 | Remove Setting Method | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
81
+ | `RF-REPLACE-CONSTRUCTOR-WITH-FACTORY-FUNCTION` | 以工厂函数取代构造函数 | Replace Constructor with Factory Function | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
82
+ | `RF-REPLACE-FUNCTION-WITH-COMMAND` | 以命令取代函数 | Replace Function with Command | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
83
+ | `RF-REPLACE-COMMAND-WITH-FUNCTION` | 以函数取代命令 | Replace Command with Function | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
84
+
85
+ ## Inheritance — 11
86
+
87
+ | ID | 中文标准名 | English | Family | Detail |
88
+ | --- | --- | --- | --- | --- |
89
+ | `RF-PULL-UP-METHOD` | 函数上移 | Pull Up Method | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
90
+ | `RF-PULL-UP-FIELD` | 字段上移 | Pull Up Field | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
91
+ | `RF-PULL-UP-CONSTRUCTOR-BODY` | 构造函数本体上移 | Pull Up Constructor Body | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
92
+ | `RF-PUSH-DOWN-METHOD` | 函数下移 | Push Down Method | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
93
+ | `RF-PUSH-DOWN-FIELD` | 字段下移 | Push Down Field | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
94
+ | `RF-REPLACE-TYPE-CODE-WITH-SUBCLASSES` | 以子类取代类型码 | Replace Type Code with Subclasses | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
95
+ | `RF-REMOVE-SUBCLASS` | 移除子类 | Remove Subclass | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
96
+ | `RF-EXTRACT-SUPERCLASS` | 提炼超类 | Extract Superclass | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
97
+ | `RF-COLLAPSE-HIERARCHY` | 折叠继承体系 | Collapse Hierarchy | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
98
+ | `RF-REPLACE-SUBCLASS-WITH-DELEGATE` | 以委托取代子类 | Replace Subclass with Delegate | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
99
+ | `RF-REPLACE-SUPERCLASS-WITH-DELEGATE` | 以委托取代超类 | Replace Superclass with Delegate | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |