@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,248 @@
1
+ # 数据重组类重构
2
+
3
+ 这些卡片以用户提供的标准重构目录为知识基线,转换为面向前端 Agent 的操作指南。保留标准 ID/中英文名称,框架适配和示例为项目原创内容。
4
+
5
+ ## RF-SPLIT-VARIABLE — 拆分变量(Split Variable)
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
+ - 保持相等性、对象身份、修改时机、序列化和属性访问语义。
38
+
39
+ ### TypeScript 注意事项
40
+ - 用 `readonly`、窄领域类型和显式 DTO adapter 表达 reference/value 意图。
41
+
42
+ ### React 注意事项
43
+ - 对象身份会影响 state 更新、memoization、dependency array、selector 和 reconciliation。
44
+
45
+ ### Vue 注意事项
46
+ - 代理/引用身份会影响 `reactive`、`ref`、`computed`、`watch`、Pinia 订阅和模板更新。
47
+
48
+ ### Frontend-Craft 前端适配
49
+ - 前端状态身份属于可观察行为,reference/value 选择必须有意为之。
50
+
51
+ ### 原创前端变换示例
52
+ - 把“Split Variable”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
53
+
54
+ ## RF-RENAME-FIELD — 字段改名(Rename Field)
55
+
56
+ ### 意图
57
+ 用准确领域词汇重命名字段,并显式处理 DTO、持久化、URL 和后端契约。
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
+ - `SMELL-MYSTERIOUS-NAME`
81
+
82
+ ### 常见组合
83
+ - 不建立固定流水线;下一步必须重新依据证据选择。
84
+
85
+ ### JavaScript 注意事项
86
+ - 保持相等性、对象身份、修改时机、序列化和属性访问语义。
87
+
88
+ ### TypeScript 注意事项
89
+ - 用 `readonly`、窄领域类型和显式 DTO adapter 表达 reference/value 意图。
90
+
91
+ ### React 注意事项
92
+ - 对象身份会影响 state 更新、memoization、dependency array、selector 和 reconciliation。
93
+
94
+ ### Vue 注意事项
95
+ - 代理/引用身份会影响 `reactive`、`ref`、`computed`、`watch`、Pinia 订阅和模板更新。
96
+
97
+ ### Frontend-Craft 前端适配
98
+ - 前端状态身份属于可观察行为,reference/value 选择必须有意为之。
99
+
100
+ ### 原创前端变换示例
101
+ - 内部 `mailId` 实际表达 threadId,可在内部改名为 `threadId`,同时在 API adapter 保留后端仍要求的 `mailId` 字段。
102
+
103
+ ## RF-REPLACE-DERIVED-VARIABLE-WITH-QUERY — 以查询取代派生变量(Replace Derived Variable with Query)
104
+
105
+ ### 意图
106
+ 从源数据实时/按需推导值,消除需要手工同步的派生状态。
107
+
108
+ ### 典型信号
109
+ - 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
110
+
111
+ ### 不适用条件
112
+ - 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
113
+
114
+ ### 前置条件
115
+ - 已明确当前可观察行为、受影响调用者和公共契约。
116
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
117
+
118
+ ### 操作步骤
119
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
120
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
121
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
122
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
123
+
124
+ ### 行为保持检查点
125
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
126
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
127
+
128
+ ### 相关坏味道
129
+ - `SMELL-MUTABLE-DATA`
130
+
131
+ ### 常见组合
132
+ - 不建立固定流水线;下一步必须重新依据证据选择。
133
+
134
+ ### JavaScript 注意事项
135
+ - 保持相等性、对象身份、修改时机、序列化和属性访问语义。
136
+
137
+ ### TypeScript 注意事项
138
+ - 用 `readonly`、窄领域类型和显式 DTO adapter 表达 reference/value 意图。
139
+
140
+ ### React 注意事项
141
+ - 对象身份会影响 state 更新、memoization、dependency array、selector 和 reconciliation。
142
+
143
+ ### Vue 注意事项
144
+ - 代理/引用身份会影响 `reactive`、`ref`、`computed`、`watch`、Pinia 订阅和模板更新。
145
+
146
+ ### Frontend-Craft 前端适配
147
+ - 前端状态身份属于可观察行为,reference/value 选择必须有意为之。
148
+
149
+ ### 原创前端变换示例
150
+ - React 同时保存 `items` 和 `totalCount = items.length` 时,可直接从 items 推导;只有计算昂贵时才讨论 memoization。
151
+
152
+ ## RF-CHANGE-REFERENCE-TO-VALUE — 将引用对象改为值对象(Change Reference to Value)
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-MUTABLE-DATA`
179
+
180
+ ### 常见组合
181
+ - 不建立固定流水线;下一步必须重新依据证据选择。
182
+
183
+ ### JavaScript 注意事项
184
+ - 保持相等性、对象身份、修改时机、序列化和属性访问语义。
185
+
186
+ ### TypeScript 注意事项
187
+ - 用 `readonly`、窄领域类型和显式 DTO adapter 表达 reference/value 意图。
188
+
189
+ ### React 注意事项
190
+ - 对象身份会影响 state 更新、memoization、dependency array、selector 和 reconciliation。
191
+
192
+ ### Vue 注意事项
193
+ - 代理/引用身份会影响 `reactive`、`ref`、`computed`、`watch`、Pinia 订阅和模板更新。
194
+
195
+ ### Frontend-Craft 前端适配
196
+ - 前端状态身份属于可观察行为,reference/value 选择必须有意为之。
197
+
198
+ ### 原创前端变换示例
199
+ - 把“Change Reference to Value”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
200
+
201
+ ## RF-CHANGE-VALUE-TO-REFERENCE — 将值对象改为引用对象(Change Value to Reference)
202
+
203
+ ### 意图
204
+ 当多个副本代表同一实体并需要统一更新时,使用规范化的共享引用。
205
+
206
+ ### 典型信号
207
+ - 多个副本代表同一实体,并且更新应该由统一身份协调。
208
+
209
+ ### 不适用条件
210
+ - 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
211
+
212
+ ### 前置条件
213
+ - 已明确当前可观察行为、受影响调用者和公共契约。
214
+ - 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
215
+
216
+ ### 操作步骤
217
+ 1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
218
+ 2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
219
+ 3. 一次迁移一个调用点或职责片段,并保持兼容边界。
220
+ 4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
221
+
222
+ ### 行为保持检查点
223
+ - 对比输入、输出、异常、副作用、执行顺序和公共契约。
224
+ - 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
225
+
226
+ ### 相关坏味道
227
+ - 不要求先存在某一种固定坏味道;以具体结构证据为准。
228
+
229
+ ### 常见组合
230
+ - 不建立固定流水线;下一步必须重新依据证据选择。
231
+
232
+ ### JavaScript 注意事项
233
+ - 保持相等性、对象身份、修改时机、序列化和属性访问语义。
234
+
235
+ ### TypeScript 注意事项
236
+ - 用 `readonly`、窄领域类型和显式 DTO adapter 表达 reference/value 意图。
237
+
238
+ ### React 注意事项
239
+ - 对象身份会影响 state 更新、memoization、dependency array、selector 和 reconciliation。
240
+
241
+ ### Vue 注意事项
242
+ - 代理/引用身份会影响 `reactive`、`ref`、`computed`、`watch`、Pinia 订阅和模板更新。
243
+
244
+ ### Frontend-Craft 前端适配
245
+ - 前端状态身份属于可观察行为,reference/value 选择必须有意为之。
246
+
247
+ ### 原创前端变换示例
248
+ - 把“Change Value to Reference”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: fec-refactoring-encapsulation
3
+ description: 保持行为的前端重构主要涉及封装类重构,已经选定或正在评估对应手法,需要查询该 family 的操作步骤、风险与 JavaScript/TypeScript/React/Vue 适配时。
4
+ ---
5
+
6
+ # 封装类重构
7
+
8
+ ## 概览
9
+ 只有在证据和前置条件支持时才使用对应手法。一次只执行一个主要结构变换,并在完成后立即验证。
10
+
11
+ ## 执行流程
12
+ 1. 在[封装类重构详细卡片](references/encapsulation-refactorings.md)确认手法和前置条件。
13
+ 2. 记录受影响行为与差异预算。
14
+ 3. 只执行该手法最小可行的一步。
15
+ 4. 在组合下一手法之前验证当前步骤。
16
+ 5. 公共契约、生命周期、状态身份或实际范围超出预期时停止并重新评估。
17
+
18
+ ## 快速索引
19
+ 详细 Reference 包含本 family 的 9 个标准手法,每项均包括意图、信号、不适用条件、操作步骤、行为保持检查、相关坏味道、组合关系、JS/TS/React/Vue 注意事项、前端适配和原创示例。
20
+
21
+ ## 常见错误
22
+ - 只根据手法名称套用,不核对前置条件。
23
+ - 一个 diff 同时混入多个结构目标。
24
+ - 把经典 class 形式机械套进现代 React/Vue。
25
+ - 相关行为没有覆盖时,仅凭“测试通过”就声称行为已得到证明。