@bovinphang/frontend-craft 2.7.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.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +378 -305
- package/CHANGELOG.zh-CN.md +377 -304
- package/CONTRIBUTING.md +371 -361
- package/CONTRIBUTING.zh-CN.md +371 -361
- package/README.md +545 -493
- package/README.openclaw.md +359 -264
- package/README.openclaw.zh-CN.md +359 -264
- package/README.zh-CN.md +545 -493
- package/agents/fec-architect.md +70 -70
- package/agents/fec-code-reviewer.md +103 -82
- package/agents/fec-debugger.md +20 -20
- package/agents/fec-design-token-mapper.md +36 -36
- package/agents/fec-doc-updater.md +13 -13
- package/agents/fec-e2e-runner.md +45 -45
- package/agents/fec-figma-implementer.md +59 -59
- package/agents/fec-performance-optimizer.md +128 -128
- package/agents/fec-refactor-cleaner.md +17 -14
- package/agents/fec-refactoring-expert.md +81 -0
- package/agents/fec-security-reviewer.md +82 -67
- package/agents/fec-test-planner.md +27 -27
- package/agents/fec-typescript-reviewer.md +103 -87
- package/agents/fec-ui-checker.md +64 -64
- package/commands/fec-debug.md +19 -19
- package/commands/fec-doc-sync.md +11 -11
- package/commands/fec-init.md +37 -38
- package/commands/fec-plan.md +58 -58
- package/commands/fec-refactor-clean.md +11 -11
- package/commands/fec-refactor-plan.md +17 -0
- package/commands/fec-refactor.md +18 -0
- package/commands/fec-review.md +71 -41
- package/commands/fec-scaffold.md +41 -41
- package/commands/fec-smell.md +17 -0
- package/commands/fec-tdd.md +17 -13
- package/dist/bin/frontend-craft.js +190 -36
- package/dist/hooks/fec-run-tests.js +5 -1
- package/dist/hooks/fec-session-start.js +1 -1
- package/docs/example-prompts.md +157 -137
- package/docs/ja-JP/README.md +534 -493
- package/docs/ko-KR/README.md +534 -493
- package/docs/project-structure.md +151 -123
- package/docs/refactoring/README.md +50 -0
- package/docs/refactoring/catalog.md +105 -0
- package/docs/refactoring/smell-refactoring-matrix.md +41 -0
- package/docs/review-and-diagram-workflows.md +39 -0
- package/docs/runtimes/antigravity.md +18 -10
- package/docs/runtimes/augment.md +18 -10
- package/docs/runtimes/claude.md +191 -177
- package/docs/runtimes/claude.zh-CN.md +189 -175
- package/docs/runtimes/cline.md +18 -10
- package/docs/runtimes/codebuddy.md +18 -10
- package/docs/runtimes/codex.md +18 -10
- package/docs/runtimes/compatibility.md +27 -0
- package/docs/runtimes/copilot.md +18 -10
- package/docs/runtimes/cursor.md +18 -10
- package/docs/runtimes/gemini.md +18 -10
- package/docs/runtimes/kilo.md +18 -10
- package/docs/runtimes/openclaw.md +18 -10
- package/docs/runtimes/opencode.md +18 -10
- package/docs/runtimes/qoder.md +18 -19
- package/docs/runtimes/trae.md +18 -10
- package/docs/runtimes/windsurf.md +18 -10
- package/docs/superpowers/plans/2026-09-26-content-integrity.md +145 -0
- package/docs/superpowers/plans/2026-09-26-diagram-quality.md +170 -0
- package/docs/superpowers/specs/2026-09-26-diagram-quality-design.md +77 -0
- package/docs/superpowers/specs/2026-09-26-project-optimization-design.md +95 -0
- package/docs/zh-CN/example-prompts.md +157 -137
- package/docs/zh-CN/project-structure.md +148 -123
- package/docs/zh-CN/review-and-diagram-workflows.md +39 -0
- package/docs/zh-TW/README.md +534 -493
- package/localized/zh-CN/agents/fec-architect.md +125 -0
- package/localized/zh-CN/agents/fec-code-reviewer.md +171 -0
- package/localized/zh-CN/agents/fec-debugger.md +44 -0
- package/localized/zh-CN/agents/fec-design-token-mapper.md +75 -0
- package/localized/zh-CN/agents/fec-doc-updater.md +30 -0
- package/localized/zh-CN/agents/fec-e2e-runner.md +107 -0
- package/localized/zh-CN/agents/fec-figma-implementer.md +104 -0
- package/localized/zh-CN/agents/fec-performance-optimizer.md +293 -0
- package/localized/zh-CN/agents/fec-refactor-cleaner.md +35 -0
- package/localized/zh-CN/agents/fec-refactoring-expert.md +53 -0
- package/localized/zh-CN/agents/fec-security-reviewer.md +132 -0
- package/localized/zh-CN/agents/fec-test-planner.md +50 -0
- package/localized/zh-CN/agents/fec-typescript-reviewer.md +158 -0
- package/localized/zh-CN/agents/fec-ui-checker.md +120 -0
- package/localized/zh-CN/commands/fec-debug.md +30 -0
- package/localized/zh-CN/commands/fec-doc-sync.md +19 -0
- package/localized/zh-CN/commands/fec-init.md +70 -0
- package/localized/zh-CN/commands/fec-plan.md +94 -0
- package/localized/zh-CN/commands/fec-refactor-clean.md +19 -0
- package/localized/zh-CN/commands/fec-refactor-plan.md +15 -0
- package/localized/zh-CN/commands/fec-refactor.md +14 -0
- package/localized/zh-CN/commands/fec-review.md +97 -0
- package/localized/zh-CN/commands/fec-scaffold.md +205 -0
- package/localized/zh-CN/commands/fec-smell.md +13 -0
- package/localized/zh-CN/commands/fec-tdd.md +25 -0
- package/localized/zh-CN/skills/TEMPLATE.md +155 -0
- package/localized/zh-CN/skills/eval_queries.json +1257 -0
- package/localized/zh-CN/skills/fec-accessibility-check/SKILL.md +39 -0
- package/localized/zh-CN/skills/fec-accessibility-check/references/report-template.md +23 -0
- package/localized/zh-CN/skills/fec-accessibility-check/references/screen-reader-testing.md +33 -0
- package/localized/zh-CN/skills/fec-alchemy/SKILL.md +74 -0
- package/localized/zh-CN/skills/fec-alchemy/assets/absorption-plan-template.md +47 -0
- package/localized/zh-CN/skills/fec-alchemy/assets/intake-template.md +55 -0
- package/localized/zh-CN/skills/fec-alchemy/assets/review-checklist.md +31 -0
- package/localized/zh-CN/skills/fec-alchemy/references/methodology.md +94 -0
- package/localized/zh-CN/skills/fec-alchemy/references/originality-and-licensing.md +57 -0
- package/localized/zh-CN/skills/fec-api-integration/SKILL.md +78 -0
- package/localized/zh-CN/skills/fec-api-integration/references/integration-patterns.md +80 -0
- package/localized/zh-CN/skills/fec-backend-requirements-handoff/SKILL.md +45 -0
- package/localized/zh-CN/skills/fec-browser-storage/SKILL.md +34 -0
- package/localized/zh-CN/skills/fec-browser-storage/references/storage-patterns.md +65 -0
- package/localized/zh-CN/skills/fec-canvas-threejs/SKILL.md +66 -0
- package/localized/zh-CN/skills/fec-canvas-threejs/references/rendering-patterns.md +67 -0
- package/localized/zh-CN/skills/fec-canvas-threejs/references/shader-webgl-patterns.md +67 -0
- package/localized/zh-CN/skills/fec-code-review/SKILL.md +162 -0
- package/localized/zh-CN/skills/fec-code-review/references/report-template.md +39 -0
- package/localized/zh-CN/skills/fec-code-smells/SKILL.md +33 -0
- package/localized/zh-CN/skills/fec-code-smells/references/detection-guide.md +25 -0
- package/localized/zh-CN/skills/fec-code-smells/references/smell-catalog.md +817 -0
- package/localized/zh-CN/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
- package/localized/zh-CN/skills/fec-component-testing/SKILL.md +119 -0
- package/localized/zh-CN/skills/fec-data-fetching/SKILL.md +62 -0
- package/localized/zh-CN/skills/fec-data-fetching/references/query-patterns.md +103 -0
- package/localized/zh-CN/skills/fec-debug-framework/SKILL.md +157 -0
- package/localized/zh-CN/skills/fec-debug-framework/references/report-template.md +58 -0
- package/localized/zh-CN/skills/fec-dependency-upgrade/SKILL.md +34 -0
- package/localized/zh-CN/skills/fec-dependency-upgrade/references/dependency-upgrade-workflow.md +56 -0
- package/localized/zh-CN/skills/fec-doc-sync/SKILL.md +39 -0
- package/localized/zh-CN/skills/fec-drawio-studio/SKILL.md +73 -0
- package/localized/zh-CN/skills/fec-drawio-studio/data/THIRD_PARTY_NOTICES.md +10 -0
- package/localized/zh-CN/skills/fec-drawio-studio/data/brand-icons.json +878 -0
- package/localized/zh-CN/skills/fec-drawio-studio/data/shape-index.json +83570 -0
- package/localized/zh-CN/skills/fec-drawio-studio/references/data-residency.md +27 -0
- package/localized/zh-CN/skills/fec-drawio-studio/references/diagram-patterns.md +60 -0
- package/localized/zh-CN/skills/fec-drawio-studio/references/flowchart-quality.md +49 -0
- package/localized/zh-CN/skills/fec-drawio-studio/references/layout-and-export.md +72 -0
- package/localized/zh-CN/skills/fec-drawio-studio/references/troubleshooting.md +29 -0
- package/localized/zh-CN/skills/fec-drawio-studio/references/xml-and-mermaid.md +58 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/brand-symbols.mjs +99 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/diagram-lint.mjs +205 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/diagram-url.mjs +102 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/drawio-export.mjs +134 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/layout-graph.mjs +107 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/png-embed-fix.mjs +26 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-go-packages.mjs +36 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-js-modules.mjs +52 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-python-classes.mjs +30 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-python-modules.mjs +55 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-rust-modules.mjs +35 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-ts-modules.mjs +7 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/shape-query.mjs +121 -0
- package/localized/zh-CN/skills/fec-drawio-studio/scripts/studio-core.mjs +139 -0
- package/localized/zh-CN/skills/fec-drawio-studio/styles/built-in/corporate.json +49 -0
- package/localized/zh-CN/skills/fec-drawio-studio/styles/built-in/default.json +49 -0
- package/localized/zh-CN/skills/fec-drawio-studio/styles/built-in/handdrawn.json +49 -0
- package/localized/zh-CN/skills/fec-drawio-studio/styles/schema.json +112 -0
- package/localized/zh-CN/skills/fec-e2e-testing/SKILL.md +42 -0
- package/localized/zh-CN/skills/fec-e2e-testing/references/e2e-ci-reporting.md +62 -0
- package/localized/zh-CN/skills/fec-e2e-testing/references/e2e-special-scenarios.md +52 -0
- package/localized/zh-CN/skills/fec-e2e-testing/references/e2e-visual-regression.md +60 -0
- package/localized/zh-CN/skills/fec-e2e-testing/references/playwright-patterns.md +95 -0
- package/localized/zh-CN/skills/fec-form-handling/SKILL.md +76 -0
- package/localized/zh-CN/skills/fec-form-handling/references/advanced-form-patterns.md +101 -0
- package/localized/zh-CN/skills/fec-image-generation/SKILL.md +110 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/interactive-diagram.html +371 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/README.md +14 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/architecture.json +121 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/invalid-explicit.json +41 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/sequence.json +53 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/sequence.mmd +21 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/workflow.json +98 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/workflow.mmd +7 -0
- package/localized/zh-CN/skills/fec-image-generation/references/artifact-routing.md +80 -0
- package/localized/zh-CN/skills/fec-image-generation/references/diagram-workflows.md +81 -0
- package/localized/zh-CN/skills/fec-image-generation/references/html-technical-diagrams.md +243 -0
- package/localized/zh-CN/skills/fec-image-generation/references/png-qa-autofix.md +37 -0
- package/localized/zh-CN/skills/fec-image-generation/scripts/diagram-browser.mjs +90 -0
- package/localized/zh-CN/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
- package/localized/zh-CN/skills/fec-image-generation/scripts/export-diagram.mjs +332 -0
- package/localized/zh-CN/skills/fec-image-generation/scripts/interactive-diagram-server.mjs +654 -0
- package/localized/zh-CN/skills/fec-image-generation/scripts/mermaid-render.mjs +64 -0
- package/localized/zh-CN/skills/fec-image-generation/scripts/png-qa.mjs +462 -0
- package/localized/zh-CN/skills/fec-image-generation/scripts/tech-diagram-render.mjs +1537 -0
- package/localized/zh-CN/skills/fec-implement-from-design/SKILL.md +129 -0
- package/localized/zh-CN/skills/fec-implement-from-design/references/design-plan-template.md +36 -0
- package/localized/zh-CN/skills/fec-legacy-to-modern-migration/SKILL.md +46 -0
- package/localized/zh-CN/skills/fec-legacy-to-modern-migration/references/migration-execution-checklist.md +110 -0
- package/localized/zh-CN/skills/fec-legacy-to-modern-migration/references/migration-report-template.md +41 -0
- package/localized/zh-CN/skills/fec-legacy-to-modern-migration/references/migration-strategy-and-mapping.md +48 -0
- package/localized/zh-CN/skills/fec-legacy-web-standard/SKILL.md +35 -0
- package/localized/zh-CN/skills/fec-legacy-web-standard/references/legacy-patterns.md +85 -0
- package/localized/zh-CN/skills/fec-list-virtualization/SKILL.md +34 -0
- package/localized/zh-CN/skills/fec-list-virtualization/references/virtualization-patterns.md +80 -0
- package/localized/zh-CN/skills/fec-monorepo-project-standard/SKILL.md +142 -0
- package/localized/zh-CN/skills/fec-motion-interaction/SKILL.md +73 -0
- package/localized/zh-CN/skills/fec-motion-interaction/references/motion-patterns.md +112 -0
- package/localized/zh-CN/skills/fec-nextjs-project-standard/SKILL.md +123 -0
- package/localized/zh-CN/skills/fec-nuxt-project-standard/SKILL.md +122 -0
- package/localized/zh-CN/skills/fec-performance-optimization/SKILL.md +80 -0
- package/localized/zh-CN/skills/fec-performance-optimization/references/framework-performance-patterns.md +38 -0
- package/localized/zh-CN/skills/fec-performance-optimization/references/report-template.md +59 -0
- package/localized/zh-CN/skills/fec-pwa-implementation/SKILL.md +35 -0
- package/localized/zh-CN/skills/fec-pwa-implementation/references/manifest-and-icons.md +53 -0
- package/localized/zh-CN/skills/fec-pwa-implementation/references/service-worker-workbox.md +68 -0
- package/localized/zh-CN/skills/fec-react-project-standard/SKILL.md +91 -0
- package/localized/zh-CN/skills/fec-react-project-standard/references/react-performance-patterns.md +35 -0
- package/localized/zh-CN/skills/fec-react-project-standard/references/react-project-structure.md +197 -0
- package/localized/zh-CN/skills/fec-react-project-standard/references/react-quality-patterns.md +131 -0
- package/localized/zh-CN/skills/fec-react-project-standard/references/react-runtime-patterns.md +293 -0
- package/localized/zh-CN/skills/fec-refactor-clean/SKILL.md +54 -0
- package/localized/zh-CN/skills/fec-refactor-clean/references/report-template.md +42 -0
- package/localized/zh-CN/skills/fec-refactoring/SKILL.md +83 -0
- package/localized/zh-CN/skills/fec-refactoring/references/principles.md +43 -0
- package/localized/zh-CN/skills/fec-refactoring/references/refactoring-vs-feature-change.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring/references/when-to-refactor.md +17 -0
- package/localized/zh-CN/skills/fec-refactoring/references/workflow.md +59 -0
- package/localized/zh-CN/skills/fec-refactoring-api/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/SKILL.md +21 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/references/selection-guide.md +41 -0
- package/localized/zh-CN/skills/fec-refactoring-control/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
- package/localized/zh-CN/skills/fec-refactoring-data/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
- package/localized/zh-CN/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
- package/localized/zh-CN/skills/fec-refactoring-functions/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
- package/localized/zh-CN/skills/fec-refactoring-inheritance/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
- package/localized/zh-CN/skills/fec-refactoring-move-features/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
- package/localized/zh-CN/skills/fec-refactoring-validation/SKILL.md +52 -0
- package/localized/zh-CN/skills/fec-refactoring-validation/references/behavior-preservation.md +15 -0
- package/localized/zh-CN/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +25 -0
- package/localized/zh-CN/skills/fec-responsive-layout/SKILL.md +34 -0
- package/localized/zh-CN/skills/fec-responsive-layout/references/responsive-layout-patterns.md +70 -0
- package/localized/zh-CN/skills/fec-route-protection/SKILL.md +135 -0
- package/localized/zh-CN/skills/fec-security-review/SKILL.md +54 -0
- package/localized/zh-CN/skills/fec-security-review/references/report-template.md +37 -0
- package/localized/zh-CN/skills/fec-security-review/references/security-checklist.md +64 -0
- package/localized/zh-CN/skills/fec-source-driven-development/SKILL.md +87 -0
- package/localized/zh-CN/skills/fec-state-management/SKILL.md +140 -0
- package/localized/zh-CN/skills/fec-state-management/references/state-patterns.md +109 -0
- package/localized/zh-CN/skills/fec-storybook-component-doc/SKILL.md +37 -0
- package/localized/zh-CN/skills/fec-storybook-component-doc/references/story-patterns.md +118 -0
- package/localized/zh-CN/skills/fec-svg-animation/SKILL.md +148 -0
- package/localized/zh-CN/skills/fec-tailwind-design-system/SKILL.md +34 -0
- package/localized/zh-CN/skills/fec-tailwind-design-system/references/tailwind-system-patterns.md +59 -0
- package/localized/zh-CN/skills/fec-tdd-workflow/SKILL.md +55 -0
- package/localized/zh-CN/skills/fec-testing-strategy/SKILL.md +45 -0
- package/localized/zh-CN/skills/fec-typescript-project-standard/SKILL.md +54 -0
- package/localized/zh-CN/skills/fec-typescript-project-standard/references/type-safety-patterns.md +102 -0
- package/localized/zh-CN/skills/fec-typescript-project-standard/references/type-safety.md +148 -0
- package/localized/zh-CN/skills/fec-ui-design/SKILL.md +108 -0
- package/localized/zh-CN/skills/fec-ui-design/data/product-rules.json +231 -0
- package/localized/zh-CN/skills/fec-ui-design/data/stack-ui-rules.json +146 -0
- package/localized/zh-CN/skills/fec-ui-design/data/style-archetypes.json +373 -0
- package/localized/zh-CN/skills/fec-ui-design/data/ux-quality-rules.json +203 -0
- package/localized/zh-CN/skills/fec-ui-design/references/design-intelligence.md +97 -0
- package/localized/zh-CN/skills/fec-ui-design/references/master-page-overrides.md +30 -0
- package/localized/zh-CN/skills/fec-ui-design/references/pre-delivery-checklist.md +39 -0
- package/localized/zh-CN/skills/fec-ui-design/scripts/design-system.mjs +648 -0
- package/localized/zh-CN/skills/fec-validation-fix/SKILL.md +51 -0
- package/localized/zh-CN/skills/fec-validation-fix/references/report-template.md +43 -0
- package/localized/zh-CN/skills/fec-vite-project-standard/SKILL.md +83 -0
- package/localized/zh-CN/skills/fec-vue3-project-standard/SKILL.md +58 -0
- package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-composables-routing.md +162 -0
- package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-performance-patterns.md +13 -0
- package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-project-structure.md +176 -0
- package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-state-api-quality.md +216 -0
- package/localized/zh-CN/skills/fec-web-video-presentation/SKILL.md +61 -0
- package/localized/zh-CN/skills/fec-web-video-presentation/data/starter-themes.json +59 -0
- package/localized/zh-CN/skills/fec-web-video-presentation/references/chapter-craft.md +37 -0
- package/localized/zh-CN/skills/fec-web-video-presentation/references/content-plan.md +38 -0
- package/localized/zh-CN/skills/fec-web-video-presentation/references/recording-and-audio.md +33 -0
- package/localized/zh-CN/skills/fec-web-video-presentation/references/theme-system.md +36 -0
- package/localized/zh-CN/skills/fec-web-video-presentation/scripts/create-video-presentation.mjs +430 -0
- package/localized/zh-CN/skills/fec-web-workers/SKILL.md +35 -0
- package/localized/zh-CN/skills/fec-web-workers/references/advanced-workers.md +54 -0
- package/localized/zh-CN/skills/fec-web-workers/references/basic-worker.md +67 -0
- package/localized/zh-CN/skills/metadata.json +2004 -0
- package/localized/zh-CN/skills/relations.json +1023 -0
- package/localized/zh-CN/templates/claude/CLAUDE.md +106 -0
- package/localized/zh-CN/templates/claude/settings.json +62 -0
- package/localized/zh-CN/templates/codex/AGENTS.md +105 -0
- package/localized/zh-CN/templates/codex/config.toml +32 -0
- package/localized/zh-CN/templates/openclaw/AGENTS.md +101 -0
- package/localized/zh-CN/templates/openclaw/OPENCLAW-CONFIG.md +12 -0
- package/localized/zh-CN/templates/shared/rules/fec-agent-workflow.md +55 -0
- package/localized/zh-CN/templates/shared/rules/fec-api-layer.md +99 -0
- package/localized/zh-CN/templates/shared/rules/fec-ci-cd.md +40 -0
- package/localized/zh-CN/templates/shared/rules/fec-code-comments.md +33 -0
- package/localized/zh-CN/templates/shared/rules/fec-design-system.md +72 -0
- package/localized/zh-CN/templates/shared/rules/fec-error-handling.md +56 -0
- package/localized/zh-CN/templates/shared/rules/fec-git-conventions.md +73 -0
- package/localized/zh-CN/templates/shared/rules/fec-i18n.md +64 -0
- package/localized/zh-CN/templates/shared/rules/fec-naming-conventions.md +120 -0
- package/localized/zh-CN/templates/shared/rules/fec-performance.md +101 -0
- package/localized/zh-CN/templates/shared/rules/fec-react.md +82 -0
- package/localized/zh-CN/templates/shared/rules/fec-refactoring.md +47 -0
- package/localized/zh-CN/templates/shared/rules/fec-rendering-patterns.md +40 -0
- package/localized/zh-CN/templates/shared/rules/fec-responsive-design.md +50 -0
- package/localized/zh-CN/templates/shared/rules/fec-source-driven-development.md +31 -0
- package/localized/zh-CN/templates/shared/rules/fec-state-management.md +60 -0
- package/localized/zh-CN/templates/shared/rules/fec-testing.md +98 -0
- package/localized/zh-CN/templates/shared/rules/fec-typescript.md +112 -0
- package/localized/zh-CN/templates/shared/rules/fec-vue.md +64 -0
- package/localized/zh-CN/templates/shared/rules/fec-working-modes.md +50 -0
- package/openclaw.plugin.json +2 -3
- package/package.json +28 -17
- package/skills/TEMPLATE.md +74 -74
- package/skills/eval_queries.json +922 -678
- package/skills/fec-accessibility-check/SKILL.md +21 -21
- package/skills/fec-accessibility-check/references/report-template.md +12 -12
- package/skills/fec-accessibility-check/references/screen-reader-testing.md +24 -24
- package/skills/fec-alchemy/SKILL.md +50 -50
- package/skills/fec-alchemy/assets/absorption-plan-template.md +32 -32
- package/skills/fec-alchemy/assets/intake-template.md +55 -55
- package/skills/fec-alchemy/assets/review-checklist.md +23 -23
- package/skills/fec-alchemy/references/methodology.md +66 -66
- package/skills/fec-alchemy/references/originality-and-licensing.md +42 -42
- package/skills/fec-api-integration/SKILL.md +61 -61
- package/skills/fec-api-integration/references/integration-patterns.md +30 -30
- package/skills/fec-backend-requirements-handoff/SKILL.md +25 -25
- package/skills/fec-browser-storage/SKILL.md +16 -16
- package/skills/fec-browser-storage/references/storage-patterns.md +16 -16
- package/skills/fec-canvas-threejs/SKILL.md +21 -21
- package/skills/fec-canvas-threejs/references/rendering-patterns.md +10 -10
- package/skills/fec-canvas-threejs/references/shader-webgl-patterns.md +37 -37
- package/skills/fec-code-review/SKILL.md +113 -94
- package/skills/fec-code-review/references/report-template.md +23 -13
- package/skills/fec-code-smells/SKILL.md +33 -0
- package/skills/fec-code-smells/references/detection-guide.md +25 -0
- package/skills/fec-code-smells/references/smell-catalog.md +861 -0
- package/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
- package/skills/fec-component-testing/SKILL.md +39 -39
- package/skills/fec-data-fetching/SKILL.md +16 -16
- package/skills/fec-data-fetching/references/query-patterns.md +27 -27
- package/skills/fec-debug-framework/SKILL.md +95 -95
- package/skills/fec-debug-framework/references/report-template.md +34 -34
- package/skills/fec-dependency-upgrade/SKILL.md +17 -17
- package/skills/fec-dependency-upgrade/references/dependency-upgrade-workflow.md +31 -31
- package/skills/fec-doc-sync/SKILL.md +23 -23
- package/skills/fec-drawio-studio/SKILL.md +42 -38
- package/skills/fec-drawio-studio/data/THIRD_PARTY_NOTICES.md +1 -1
- package/skills/fec-drawio-studio/data/shape-index.json +83570 -0
- package/skills/fec-drawio-studio/references/diagram-patterns.md +19 -0
- package/skills/fec-drawio-studio/references/flowchart-quality.md +49 -0
- package/skills/fec-drawio-studio/references/layout-and-export.md +18 -3
- package/skills/fec-drawio-studio/references/xml-and-mermaid.md +5 -1
- package/skills/fec-drawio-studio/scripts/diagram-lint.mjs +62 -0
- package/skills/fec-drawio-studio/scripts/drawio-export.mjs +134 -0
- package/skills/fec-drawio-studio/scripts/shape-query.mjs +55 -15
- package/skills/fec-e2e-testing/SKILL.md +24 -24
- package/skills/fec-e2e-testing/references/e2e-ci-reporting.md +20 -20
- package/skills/fec-e2e-testing/references/e2e-special-scenarios.md +10 -10
- package/skills/fec-e2e-testing/references/e2e-visual-regression.md +17 -17
- package/skills/fec-e2e-testing/references/playwright-patterns.md +6 -6
- package/skills/fec-form-handling/SKILL.md +21 -21
- package/skills/fec-form-handling/references/advanced-form-patterns.md +41 -41
- package/skills/fec-image-generation/SKILL.md +84 -29
- package/skills/fec-image-generation/assets/interactive-diagram.html +371 -0
- package/skills/fec-image-generation/assets/quality-examples/README.md +14 -0
- package/skills/fec-image-generation/assets/quality-examples/architecture.json +121 -0
- package/skills/fec-image-generation/assets/quality-examples/invalid-explicit.json +41 -0
- package/skills/fec-image-generation/assets/quality-examples/sequence.json +53 -0
- package/skills/fec-image-generation/assets/quality-examples/sequence.mmd +21 -0
- package/skills/fec-image-generation/assets/quality-examples/workflow.json +98 -0
- package/skills/fec-image-generation/assets/quality-examples/workflow.mmd +7 -0
- package/skills/fec-image-generation/references/diagram-workflows.md +41 -3
- package/skills/fec-image-generation/references/html-technical-diagrams.md +243 -0
- package/skills/fec-image-generation/references/png-qa-autofix.md +9 -2
- package/skills/fec-image-generation/scripts/diagram-browser.mjs +90 -0
- package/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
- package/skills/fec-image-generation/scripts/export-diagram.mjs +332 -0
- package/skills/fec-image-generation/scripts/interactive-diagram-server.mjs +654 -0
- package/skills/fec-image-generation/scripts/mermaid-render.mjs +64 -0
- package/skills/fec-image-generation/scripts/png-qa.mjs +35 -4
- package/skills/fec-image-generation/scripts/tech-diagram-render.mjs +1537 -0
- package/skills/fec-implement-from-design/SKILL.md +81 -81
- package/skills/fec-implement-from-design/references/design-plan-template.md +16 -16
- package/skills/fec-legacy-to-modern-migration/SKILL.md +29 -29
- package/skills/fec-legacy-to-modern-migration/references/migration-execution-checklist.md +81 -81
- package/skills/fec-legacy-to-modern-migration/references/migration-report-template.md +37 -37
- package/skills/fec-legacy-to-modern-migration/references/migration-strategy-and-mapping.md +31 -31
- package/skills/fec-legacy-web-standard/SKILL.md +17 -17
- package/skills/fec-legacy-web-standard/references/legacy-patterns.md +16 -16
- package/skills/fec-list-virtualization/SKILL.md +16 -16
- package/skills/fec-list-virtualization/references/virtualization-patterns.md +31 -31
- package/skills/fec-monorepo-project-standard/SKILL.md +52 -52
- package/skills/fec-motion-interaction/SKILL.md +51 -51
- package/skills/fec-motion-interaction/references/motion-patterns.md +11 -11
- package/skills/fec-nextjs-project-standard/SKILL.md +64 -64
- package/skills/fec-nuxt-project-standard/SKILL.md +57 -57
- package/skills/fec-performance-optimization/SKILL.md +54 -54
- package/skills/fec-performance-optimization/references/framework-performance-patterns.md +23 -23
- package/skills/fec-performance-optimization/references/report-template.md +31 -31
- package/skills/fec-pwa-implementation/SKILL.md +17 -17
- package/skills/fec-pwa-implementation/references/manifest-and-icons.md +12 -12
- package/skills/fec-pwa-implementation/references/service-worker-workbox.md +13 -13
- package/skills/fec-react-project-standard/SKILL.md +72 -72
- package/skills/fec-react-project-standard/references/react-performance-patterns.md +28 -28
- package/skills/fec-react-project-standard/references/react-project-structure.md +112 -112
- package/skills/fec-react-project-standard/references/react-quality-patterns.md +72 -72
- package/skills/fec-react-project-standard/references/react-runtime-patterns.md +94 -94
- package/skills/fec-refactor-clean/SKILL.md +33 -30
- package/skills/fec-refactor-clean/references/report-template.md +23 -23
- package/skills/fec-refactoring/SKILL.md +83 -0
- package/skills/fec-refactoring/references/principles.md +60 -0
- package/skills/fec-refactoring/references/refactoring-vs-feature-change.md +27 -0
- package/skills/fec-refactoring/references/when-to-refactor.md +31 -0
- package/skills/fec-refactoring/references/workflow.md +90 -0
- package/skills/fec-refactoring-api/SKILL.md +25 -0
- package/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
- package/skills/fec-refactoring-catalog/SKILL.md +28 -0
- package/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
- package/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
- package/skills/fec-refactoring-catalog/references/selection-guide.md +47 -0
- package/skills/fec-refactoring-control/SKILL.md +25 -0
- package/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
- package/skills/fec-refactoring-data/SKILL.md +25 -0
- package/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
- package/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
- package/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
- package/skills/fec-refactoring-functions/SKILL.md +25 -0
- package/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
- package/skills/fec-refactoring-inheritance/SKILL.md +25 -0
- package/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
- package/skills/fec-refactoring-move-features/SKILL.md +25 -0
- package/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
- package/skills/fec-refactoring-validation/SKILL.md +59 -0
- package/skills/fec-refactoring-validation/references/behavior-preservation.md +53 -0
- package/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +42 -0
- package/skills/fec-responsive-layout/SKILL.md +17 -17
- package/skills/fec-responsive-layout/references/responsive-layout-patterns.md +37 -37
- package/skills/fec-route-protection/SKILL.md +26 -26
- package/skills/fec-security-review/SKILL.md +36 -20
- package/skills/fec-security-review/references/report-template.md +22 -12
- package/skills/fec-security-review/references/security-checklist.md +27 -27
- package/skills/fec-source-driven-development/SKILL.md +59 -59
- package/skills/fec-state-management/SKILL.md +34 -34
- package/skills/fec-state-management/references/state-patterns.md +19 -19
- package/skills/fec-storybook-component-doc/SKILL.md +19 -19
- package/skills/fec-storybook-component-doc/references/story-patterns.md +12 -12
- package/skills/fec-svg-animation/SKILL.md +32 -32
- package/skills/fec-tailwind-design-system/SKILL.md +17 -17
- package/skills/fec-tailwind-design-system/references/tailwind-system-patterns.md +36 -36
- package/skills/fec-tdd-workflow/SKILL.md +32 -28
- package/skills/fec-testing-strategy/SKILL.md +29 -29
- package/skills/fec-typescript-project-standard/SKILL.md +38 -38
- package/skills/fec-typescript-project-standard/references/type-safety-patterns.md +20 -20
- package/skills/fec-typescript-project-standard/references/type-safety.md +18 -18
- package/skills/fec-ui-design/SKILL.md +90 -90
- package/skills/fec-ui-design/references/design-intelligence.md +61 -61
- package/skills/fec-ui-design/references/master-page-overrides.md +15 -15
- package/skills/fec-ui-design/references/pre-delivery-checklist.md +38 -38
- package/skills/fec-validation-fix/SKILL.md +26 -26
- package/skills/fec-validation-fix/references/report-template.md +25 -25
- package/skills/fec-vite-project-standard/SKILL.md +39 -39
- package/skills/fec-vue3-project-standard/SKILL.md +38 -38
- package/skills/fec-vue3-project-standard/references/vue3-composables-routing.md +36 -36
- package/skills/fec-vue3-project-standard/references/vue3-performance-patterns.md +8 -8
- package/skills/fec-vue3-project-standard/references/vue3-project-structure.md +112 -112
- package/skills/fec-vue3-project-standard/references/vue3-state-api-quality.md +74 -74
- package/skills/fec-web-video-presentation/SKILL.md +33 -33
- package/skills/fec-web-workers/SKILL.md +16 -16
- package/skills/fec-web-workers/references/advanced-workers.md +13 -13
- package/skills/fec-web-workers/references/basic-worker.md +8 -8
- package/skills/metadata.json +485 -116
- package/skills/relations.json +268 -0
- package/templates/claude/CLAUDE.md +60 -60
- package/templates/codex/AGENTS.md +76 -76
- package/templates/codex/config.toml +4 -4
- package/templates/openclaw/AGENTS.md +68 -68
- package/templates/openclaw/OPENCLAW-CONFIG.md +8 -8
- package/templates/shared/rules/fec-agent-workflow.md +41 -40
- package/templates/shared/rules/fec-api-layer.md +52 -52
- package/templates/shared/rules/fec-ci-cd.md +29 -29
- package/templates/shared/rules/fec-code-comments.md +22 -22
- package/templates/shared/rules/fec-design-system.md +53 -53
- package/templates/shared/rules/fec-error-handling.md +40 -40
- package/templates/shared/rules/fec-git-conventions.md +42 -42
- package/templates/shared/rules/fec-i18n.md +48 -48
- package/templates/shared/rules/fec-naming-conventions.md +91 -91
- package/templates/shared/rules/fec-performance.md +78 -78
- package/templates/shared/rules/fec-react.md +58 -58
- package/templates/shared/rules/fec-refactoring.md +34 -34
- package/templates/shared/rules/fec-rendering-patterns.md +36 -36
- package/templates/shared/rules/fec-responsive-design.md +37 -37
- package/templates/shared/rules/fec-source-driven-development.md +22 -22
- package/templates/shared/rules/fec-state-management.md +56 -56
- package/templates/shared/rules/fec-testing.md +64 -64
- package/templates/shared/rules/fec-typescript.md +75 -75
- package/templates/shared/rules/fec-vue.md +42 -42
- package/templates/shared/rules/fec-working-modes.md +34 -34
- package/docs/superpowers/plans/2026-05-29-fec-debug.md +0 -491
- package/docs/superpowers/specs/2026-05-29-fec-debug-design.md +0 -340
- package/skills/fec-drawio-studio/data/shape-index.json.gz +0 -0
|
@@ -0,0 +1,567 @@
|
|
|
1
|
+
# 函数类重构
|
|
2
|
+
|
|
3
|
+
这些卡片以用户提供的标准重构目录为知识基线,转换为面向前端 Agent 的操作指南。保留标准 ID/中英文名称,框架适配和示例为项目原创内容。
|
|
4
|
+
|
|
5
|
+
## RF-EXTRACT-FUNCTION — 提炼函数(Extract Function)
|
|
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-DUPLICATED-CODE`
|
|
32
|
+
- `SMELL-LONG-FUNCTION`
|
|
33
|
+
- `SMELL-MUTABLE-DATA`
|
|
34
|
+
- `SMELL-DIVERGENT-CHANGE`
|
|
35
|
+
- `SMELL-FEATURE-ENVY`
|
|
36
|
+
- `SMELL-MESSAGE-CHAINS`
|
|
37
|
+
- `SMELL-DATA-CLASS`
|
|
38
|
+
- `SMELL-COMMENTS`
|
|
39
|
+
|
|
40
|
+
### 常见组合
|
|
41
|
+
- 搬移函数(Move Function):仅当下一手法自身前置条件也成立时组合。
|
|
42
|
+
- 以查询取代临时变量(Replace Temp with Query):仅当下一手法自身前置条件也成立时组合。
|
|
43
|
+
|
|
44
|
+
### JavaScript 注意事项
|
|
45
|
+
- 保留求值顺序、闭包、`this`、默认参数、rest/spread 与副作用时序。
|
|
46
|
+
|
|
47
|
+
### TypeScript 注意事项
|
|
48
|
+
- 参数对象要有明确类型;保持类型推导和公共签名,不用断言掩盖问题。
|
|
49
|
+
|
|
50
|
+
### React 注意事项
|
|
51
|
+
- 提炼函数不能违反 Hook 规则或制造 stale closure;保持事件/effect 顺序。
|
|
52
|
+
|
|
53
|
+
### Vue 注意事项
|
|
54
|
+
- 保持 `ref`/`reactive` 解包、computed 依赖和 composable 生命周期作用域。
|
|
55
|
+
|
|
56
|
+
### Frontend-Craft 前端适配
|
|
57
|
+
- 可使用 helper、handler、module、hook/composable 或 service,不为了“函数组合成类”而强制 class。
|
|
58
|
+
|
|
59
|
+
### 原创前端变换示例
|
|
60
|
+
- 把“Extract Function”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
61
|
+
|
|
62
|
+
## RF-INLINE-FUNCTION — 内联函数(Inline Function)
|
|
63
|
+
|
|
64
|
+
### 意图
|
|
65
|
+
移除已经没有解释价值的函数边界,减少无意义间接层,并为后续重新组织代码腾出空间。
|
|
66
|
+
|
|
67
|
+
### 典型信号
|
|
68
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
69
|
+
|
|
70
|
+
### 不适用条件
|
|
71
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
72
|
+
|
|
73
|
+
### 前置条件
|
|
74
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
75
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
76
|
+
|
|
77
|
+
### 操作步骤
|
|
78
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
79
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
80
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
81
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
82
|
+
|
|
83
|
+
### 行为保持检查点
|
|
84
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
85
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
86
|
+
|
|
87
|
+
### 相关坏味道
|
|
88
|
+
- `SMELL-SHOTGUN-SURGERY`
|
|
89
|
+
- `SMELL-LAZY-ELEMENT`
|
|
90
|
+
- `SMELL-SPECULATIVE-GENERALITY`
|
|
91
|
+
- `SMELL-MIDDLE-MAN`
|
|
92
|
+
|
|
93
|
+
### 常见组合
|
|
94
|
+
- `RF-EXTRACT-FUNCTION`:仅当下一手法自身前置条件也成立时组合。
|
|
95
|
+
|
|
96
|
+
### JavaScript 注意事项
|
|
97
|
+
- 保留求值顺序、闭包、`this`、默认参数、rest/spread 与副作用时序。
|
|
98
|
+
|
|
99
|
+
### TypeScript 注意事项
|
|
100
|
+
- 参数对象要有明确类型;保持类型推导和公共签名,不用断言掩盖问题。
|
|
101
|
+
|
|
102
|
+
### React 注意事项
|
|
103
|
+
- 提炼函数不能违反 Hook 规则或制造 stale closure;保持事件/effect 顺序。
|
|
104
|
+
|
|
105
|
+
### Vue 注意事项
|
|
106
|
+
- 保持 `ref`/`reactive` 解包、computed 依赖和 composable 生命周期作用域。
|
|
107
|
+
|
|
108
|
+
### Frontend-Craft 前端适配
|
|
109
|
+
- 可使用 helper、handler、module、hook/composable 或 service,不为了“函数组合成类”而强制 class。
|
|
110
|
+
|
|
111
|
+
### 原创前端变换示例
|
|
112
|
+
- 把“Inline Function”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
113
|
+
|
|
114
|
+
## RF-EXTRACT-VARIABLE — 提炼变量(Extract Variable)
|
|
115
|
+
|
|
116
|
+
### 意图
|
|
117
|
+
为复杂表达式中的重要概念命名,降低阅读者的即时推理负担。
|
|
118
|
+
|
|
119
|
+
### 典型信号
|
|
120
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
121
|
+
|
|
122
|
+
### 不适用条件
|
|
123
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
124
|
+
|
|
125
|
+
### 前置条件
|
|
126
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
127
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
128
|
+
|
|
129
|
+
### 操作步骤
|
|
130
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
131
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
132
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
133
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
134
|
+
|
|
135
|
+
### 行为保持检查点
|
|
136
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
137
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
138
|
+
|
|
139
|
+
### 相关坏味道
|
|
140
|
+
- 不要求先存在某一种固定坏味道;以具体结构证据为准。
|
|
141
|
+
|
|
142
|
+
### 常见组合
|
|
143
|
+
- `RF-INLINE-VARIABLE`:仅当下一手法自身前置条件也成立时组合。
|
|
144
|
+
|
|
145
|
+
### JavaScript 注意事项
|
|
146
|
+
- 保留求值顺序、闭包、`this`、默认参数、rest/spread 与副作用时序。
|
|
147
|
+
|
|
148
|
+
### TypeScript 注意事项
|
|
149
|
+
- 参数对象要有明确类型;保持类型推导和公共签名,不用断言掩盖问题。
|
|
150
|
+
|
|
151
|
+
### React 注意事项
|
|
152
|
+
- 提炼函数不能违反 Hook 规则或制造 stale closure;保持事件/effect 顺序。
|
|
153
|
+
|
|
154
|
+
### Vue 注意事项
|
|
155
|
+
- 保持 `ref`/`reactive` 解包、computed 依赖和 composable 生命周期作用域。
|
|
156
|
+
|
|
157
|
+
### Frontend-Craft 前端适配
|
|
158
|
+
- 可使用 helper、handler、module、hook/composable 或 service,不为了“函数组合成类”而强制 class。
|
|
159
|
+
|
|
160
|
+
### 原创前端变换示例
|
|
161
|
+
- 把“Extract Variable”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
162
|
+
|
|
163
|
+
## RF-INLINE-VARIABLE — 内联变量(Inline Variable)
|
|
164
|
+
|
|
165
|
+
### 意图
|
|
166
|
+
移除不提供解释价值的临时变量,直接使用更清晰且语义稳定的表达式。
|
|
167
|
+
|
|
168
|
+
### 典型信号
|
|
169
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
170
|
+
|
|
171
|
+
### 不适用条件
|
|
172
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
173
|
+
|
|
174
|
+
### 前置条件
|
|
175
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
176
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
177
|
+
|
|
178
|
+
### 操作步骤
|
|
179
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
180
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
181
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
182
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
183
|
+
|
|
184
|
+
### 行为保持检查点
|
|
185
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
186
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
187
|
+
|
|
188
|
+
### 相关坏味道
|
|
189
|
+
- 不要求先存在某一种固定坏味道;以具体结构证据为准。
|
|
190
|
+
|
|
191
|
+
### 常见组合
|
|
192
|
+
- `RF-EXTRACT-VARIABLE`:仅当下一手法自身前置条件也成立时组合。
|
|
193
|
+
|
|
194
|
+
### JavaScript 注意事项
|
|
195
|
+
- 保留求值顺序、闭包、`this`、默认参数、rest/spread 与副作用时序。
|
|
196
|
+
|
|
197
|
+
### TypeScript 注意事项
|
|
198
|
+
- 参数对象要有明确类型;保持类型推导和公共签名,不用断言掩盖问题。
|
|
199
|
+
|
|
200
|
+
### React 注意事项
|
|
201
|
+
- 提炼函数不能违反 Hook 规则或制造 stale closure;保持事件/effect 顺序。
|
|
202
|
+
|
|
203
|
+
### Vue 注意事项
|
|
204
|
+
- 保持 `ref`/`reactive` 解包、computed 依赖和 composable 生命周期作用域。
|
|
205
|
+
|
|
206
|
+
### Frontend-Craft 前端适配
|
|
207
|
+
- 可使用 helper、handler、module、hook/composable 或 service,不为了“函数组合成类”而强制 class。
|
|
208
|
+
|
|
209
|
+
### 原创前端变换示例
|
|
210
|
+
- 把“Inline Variable”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
211
|
+
|
|
212
|
+
## RF-CHANGE-FUNCTION-DECLARATION — 改变函数声明(Change Function Declaration)
|
|
213
|
+
|
|
214
|
+
### 意图
|
|
215
|
+
调整函数名称或参数契约,使调用方式准确表达函数责任。
|
|
216
|
+
|
|
217
|
+
### 典型信号
|
|
218
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
219
|
+
|
|
220
|
+
### 不适用条件
|
|
221
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
222
|
+
|
|
223
|
+
### 前置条件
|
|
224
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
225
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
226
|
+
|
|
227
|
+
### 操作步骤
|
|
228
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
229
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
230
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
231
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
232
|
+
|
|
233
|
+
### 行为保持检查点
|
|
234
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
235
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
236
|
+
|
|
237
|
+
### 相关坏味道
|
|
238
|
+
- `SMELL-MYSTERIOUS-NAME`
|
|
239
|
+
- `SMELL-SPECULATIVE-GENERALITY`
|
|
240
|
+
- `SMELL-ALTERNATIVE-CLASSES-DIFFERENT-INTERFACES`
|
|
241
|
+
- `SMELL-COMMENTS`
|
|
242
|
+
|
|
243
|
+
### 常见组合
|
|
244
|
+
- 不建立固定流水线;下一步必须重新依据证据选择。
|
|
245
|
+
|
|
246
|
+
### JavaScript 注意事项
|
|
247
|
+
- 保留求值顺序、闭包、`this`、默认参数、rest/spread 与副作用时序。
|
|
248
|
+
|
|
249
|
+
### TypeScript 注意事项
|
|
250
|
+
- 参数对象要有明确类型;保持类型推导和公共签名,不用断言掩盖问题。
|
|
251
|
+
|
|
252
|
+
### React 注意事项
|
|
253
|
+
- 提炼函数不能违反 Hook 规则或制造 stale closure;保持事件/effect 顺序。
|
|
254
|
+
|
|
255
|
+
### Vue 注意事项
|
|
256
|
+
- 保持 `ref`/`reactive` 解包、computed 依赖和 composable 生命周期作用域。
|
|
257
|
+
|
|
258
|
+
### Frontend-Craft 前端适配
|
|
259
|
+
- 可使用 helper、handler、module、hook/composable 或 service,不为了“函数组合成类”而强制 class。
|
|
260
|
+
|
|
261
|
+
### 原创前端变换示例
|
|
262
|
+
- 把“Change Function Declaration”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
263
|
+
|
|
264
|
+
## RF-ENCAPSULATE-VARIABLE — 封装变量(Encapsulate Variable)
|
|
265
|
+
|
|
266
|
+
### 意图
|
|
267
|
+
让变量的读取和修改经过明确边界,从而控制访问并为后续改变表示或所有权建立安全缝隙。
|
|
268
|
+
|
|
269
|
+
### 典型信号
|
|
270
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
271
|
+
|
|
272
|
+
### 不适用条件
|
|
273
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
274
|
+
|
|
275
|
+
### 前置条件
|
|
276
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
277
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
278
|
+
|
|
279
|
+
### 操作步骤
|
|
280
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
281
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
282
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
283
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
284
|
+
|
|
285
|
+
### 行为保持检查点
|
|
286
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
287
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
288
|
+
|
|
289
|
+
### 相关坏味道
|
|
290
|
+
- `SMELL-GLOBAL-DATA`
|
|
291
|
+
- `SMELL-MUTABLE-DATA`
|
|
292
|
+
|
|
293
|
+
### 常见组合
|
|
294
|
+
- `RF-RENAME-VARIABLE`:仅当下一手法自身前置条件也成立时组合。
|
|
295
|
+
- 搬移函数(Move Function):仅当下一手法自身前置条件也成立时组合。
|
|
296
|
+
|
|
297
|
+
### JavaScript 注意事项
|
|
298
|
+
- 保留求值顺序、闭包、`this`、默认参数、rest/spread 与副作用时序。
|
|
299
|
+
|
|
300
|
+
### TypeScript 注意事项
|
|
301
|
+
- 参数对象要有明确类型;保持类型推导和公共签名,不用断言掩盖问题。
|
|
302
|
+
|
|
303
|
+
### React 注意事项
|
|
304
|
+
- 提炼函数不能违反 Hook 规则或制造 stale closure;保持事件/effect 顺序。
|
|
305
|
+
|
|
306
|
+
### Vue 注意事项
|
|
307
|
+
- 保持 `ref`/`reactive` 解包、computed 依赖和 composable 生命周期作用域。
|
|
308
|
+
|
|
309
|
+
### Frontend-Craft 前端适配
|
|
310
|
+
- 可使用 helper、handler、module、hook/composable 或 service,不为了“函数组合成类”而强制 class。
|
|
311
|
+
|
|
312
|
+
### 原创前端变换示例
|
|
313
|
+
- 把“Encapsulate Variable”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
314
|
+
|
|
315
|
+
## RF-RENAME-VARIABLE — 变量改名(Rename Variable)
|
|
316
|
+
|
|
317
|
+
### 意图
|
|
318
|
+
使用准确的领域名称表达变量的角色和含义。
|
|
319
|
+
|
|
320
|
+
### 典型信号
|
|
321
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
322
|
+
|
|
323
|
+
### 不适用条件
|
|
324
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
325
|
+
|
|
326
|
+
### 前置条件
|
|
327
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
328
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
329
|
+
|
|
330
|
+
### 操作步骤
|
|
331
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
332
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
333
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
334
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
335
|
+
|
|
336
|
+
### 行为保持检查点
|
|
337
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
338
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
339
|
+
|
|
340
|
+
### 相关坏味道
|
|
341
|
+
- `SMELL-MYSTERIOUS-NAME`
|
|
342
|
+
|
|
343
|
+
### 常见组合
|
|
344
|
+
- 不建立固定流水线;下一步必须重新依据证据选择。
|
|
345
|
+
|
|
346
|
+
### JavaScript 注意事项
|
|
347
|
+
- 保留求值顺序、闭包、`this`、默认参数、rest/spread 与副作用时序。
|
|
348
|
+
|
|
349
|
+
### TypeScript 注意事项
|
|
350
|
+
- 参数对象要有明确类型;保持类型推导和公共签名,不用断言掩盖问题。
|
|
351
|
+
|
|
352
|
+
### React 注意事项
|
|
353
|
+
- 提炼函数不能违反 Hook 规则或制造 stale closure;保持事件/effect 顺序。
|
|
354
|
+
|
|
355
|
+
### Vue 注意事项
|
|
356
|
+
- 保持 `ref`/`reactive` 解包、computed 依赖和 composable 生命周期作用域。
|
|
357
|
+
|
|
358
|
+
### Frontend-Craft 前端适配
|
|
359
|
+
- 可使用 helper、handler、module、hook/composable 或 service,不为了“函数组合成类”而强制 class。
|
|
360
|
+
|
|
361
|
+
### 原创前端变换示例
|
|
362
|
+
- 把“Rename Variable”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
363
|
+
|
|
364
|
+
## RF-INTRODUCE-PARAMETER-OBJECT — 引入参数对象(Introduce Parameter Object)
|
|
365
|
+
|
|
366
|
+
### 意图
|
|
367
|
+
把总是共同出现并形成一个概念的参数组织成命名对象契约。
|
|
368
|
+
|
|
369
|
+
### 典型信号
|
|
370
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
371
|
+
|
|
372
|
+
### 不适用条件
|
|
373
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
374
|
+
|
|
375
|
+
### 前置条件
|
|
376
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
377
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
378
|
+
|
|
379
|
+
### 操作步骤
|
|
380
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
381
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
382
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
383
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
384
|
+
|
|
385
|
+
### 行为保持检查点
|
|
386
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
387
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
388
|
+
|
|
389
|
+
### 相关坏味道
|
|
390
|
+
- `SMELL-LONG-FUNCTION`
|
|
391
|
+
- `SMELL-LONG-PARAMETER-LIST`
|
|
392
|
+
- `SMELL-DATA-CLUMPS`
|
|
393
|
+
- `SMELL-PRIMITIVE-OBSESSION`
|
|
394
|
+
|
|
395
|
+
### 常见组合
|
|
396
|
+
- 不建立固定流水线;下一步必须重新依据证据选择。
|
|
397
|
+
|
|
398
|
+
### JavaScript 注意事项
|
|
399
|
+
- 保留求值顺序、闭包、`this`、默认参数、rest/spread 与副作用时序。
|
|
400
|
+
|
|
401
|
+
### TypeScript 注意事项
|
|
402
|
+
- 参数对象要有明确类型;保持类型推导和公共签名,不用断言掩盖问题。
|
|
403
|
+
|
|
404
|
+
### React 注意事项
|
|
405
|
+
- 提炼函数不能违反 Hook 规则或制造 stale closure;保持事件/effect 顺序。
|
|
406
|
+
|
|
407
|
+
### Vue 注意事项
|
|
408
|
+
- 保持 `ref`/`reactive` 解包、computed 依赖和 composable 生命周期作用域。
|
|
409
|
+
|
|
410
|
+
### Frontend-Craft 前端适配
|
|
411
|
+
- 可使用 helper、handler、module、hook/composable 或 service,不为了“函数组合成类”而强制 class。
|
|
412
|
+
|
|
413
|
+
### 原创前端变换示例
|
|
414
|
+
- 把“Introduce Parameter Object”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
415
|
+
|
|
416
|
+
## RF-COMBINE-FUNCTIONS-INTO-CLASS — 函数组合成类(Combine Functions into Class)
|
|
417
|
+
|
|
418
|
+
### 意图
|
|
419
|
+
把围绕同一数据上下文工作的函数放进一个内聚所有者;前端可采用 class、module、service、hook/composable 或 closure。
|
|
420
|
+
|
|
421
|
+
### 典型信号
|
|
422
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
423
|
+
|
|
424
|
+
### 不适用条件
|
|
425
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
426
|
+
|
|
427
|
+
### 前置条件
|
|
428
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
429
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
430
|
+
|
|
431
|
+
### 操作步骤
|
|
432
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
433
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
434
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
435
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
436
|
+
|
|
437
|
+
### 行为保持检查点
|
|
438
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
439
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
440
|
+
|
|
441
|
+
### 相关坏味道
|
|
442
|
+
- `SMELL-LONG-PARAMETER-LIST`
|
|
443
|
+
- `SMELL-MUTABLE-DATA`
|
|
444
|
+
- `SMELL-SHOTGUN-SURGERY`
|
|
445
|
+
|
|
446
|
+
### 常见组合
|
|
447
|
+
- 不建立固定流水线;下一步必须重新依据证据选择。
|
|
448
|
+
|
|
449
|
+
### JavaScript 注意事项
|
|
450
|
+
- 保留求值顺序、闭包、`this`、默认参数、rest/spread 与副作用时序。
|
|
451
|
+
|
|
452
|
+
### TypeScript 注意事项
|
|
453
|
+
- 参数对象要有明确类型;保持类型推导和公共签名,不用断言掩盖问题。
|
|
454
|
+
|
|
455
|
+
### React 注意事项
|
|
456
|
+
- 提炼函数不能违反 Hook 规则或制造 stale closure;保持事件/effect 顺序。
|
|
457
|
+
|
|
458
|
+
### Vue 注意事项
|
|
459
|
+
- 保持 `ref`/`reactive` 解包、computed 依赖和 composable 生命周期作用域。
|
|
460
|
+
|
|
461
|
+
### Frontend-Craft 前端适配
|
|
462
|
+
- 可使用 helper、handler、module、hook/composable 或 service,不为了“函数组合成类”而强制 class。
|
|
463
|
+
|
|
464
|
+
### 原创前端变换示例
|
|
465
|
+
- 多个报价计算函数都接收同一 quote,可收敛为 pricing module 或 `useQuotePricing()`;并不因为手法名含“Class”就强制 class。
|
|
466
|
+
|
|
467
|
+
## RF-COMBINE-FUNCTIONS-INTO-TRANSFORM — 函数组合成变换(Combine Functions into Transform)
|
|
468
|
+
|
|
469
|
+
### 意图
|
|
470
|
+
把针对同一输入的相关派生计算组合成一个纯变换,统一产生增强后的结果。
|
|
471
|
+
|
|
472
|
+
### 典型信号
|
|
473
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
474
|
+
|
|
475
|
+
### 不适用条件
|
|
476
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
477
|
+
|
|
478
|
+
### 前置条件
|
|
479
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
480
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
481
|
+
|
|
482
|
+
### 操作步骤
|
|
483
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
484
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
485
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
486
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
487
|
+
|
|
488
|
+
### 行为保持检查点
|
|
489
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
490
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
491
|
+
|
|
492
|
+
### 相关坏味道
|
|
493
|
+
- `SMELL-MUTABLE-DATA`
|
|
494
|
+
- `SMELL-SHOTGUN-SURGERY`
|
|
495
|
+
|
|
496
|
+
### 常见组合
|
|
497
|
+
- 不建立固定流水线;下一步必须重新依据证据选择。
|
|
498
|
+
|
|
499
|
+
### JavaScript 注意事项
|
|
500
|
+
- 保留求值顺序、闭包、`this`、默认参数、rest/spread 与副作用时序。
|
|
501
|
+
|
|
502
|
+
### TypeScript 注意事项
|
|
503
|
+
- 参数对象要有明确类型;保持类型推导和公共签名,不用断言掩盖问题。
|
|
504
|
+
|
|
505
|
+
### React 注意事项
|
|
506
|
+
- 提炼函数不能违反 Hook 规则或制造 stale closure;保持事件/effect 顺序。
|
|
507
|
+
|
|
508
|
+
### Vue 注意事项
|
|
509
|
+
- 保持 `ref`/`reactive` 解包、computed 依赖和 composable 生命周期作用域。
|
|
510
|
+
|
|
511
|
+
### Frontend-Craft 前端适配
|
|
512
|
+
- 可使用 helper、handler、module、hook/composable 或 service,不为了“函数组合成类”而强制 class。
|
|
513
|
+
|
|
514
|
+
### 原创前端变换示例
|
|
515
|
+
- 把“Combine Functions into Transform”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
516
|
+
|
|
517
|
+
## RF-SPLIT-PHASE — 拆分阶段(Split Phase)
|
|
518
|
+
|
|
519
|
+
### 意图
|
|
520
|
+
把顺序流程中的不同关注点拆成具有明确输入/输出的阶段。
|
|
521
|
+
|
|
522
|
+
### 典型信号
|
|
523
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
524
|
+
|
|
525
|
+
### 不适用条件
|
|
526
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
527
|
+
|
|
528
|
+
### 前置条件
|
|
529
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
530
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
531
|
+
|
|
532
|
+
### 操作步骤
|
|
533
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
534
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
535
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
536
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
537
|
+
|
|
538
|
+
### 行为保持检查点
|
|
539
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
540
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
541
|
+
|
|
542
|
+
### 相关坏味道
|
|
543
|
+
- `SMELL-DIVERGENT-CHANGE`
|
|
544
|
+
- `SMELL-SHOTGUN-SURGERY`
|
|
545
|
+
- `SMELL-DATA-CLASS`
|
|
546
|
+
|
|
547
|
+
### 常见组合
|
|
548
|
+
- `RF-EXTRACT-FUNCTION`:仅当下一手法自身前置条件也成立时组合。
|
|
549
|
+
- 搬移函数(Move Function):仅当下一手法自身前置条件也成立时组合。
|
|
550
|
+
|
|
551
|
+
### JavaScript 注意事项
|
|
552
|
+
- 保留求值顺序、闭包、`this`、默认参数、rest/spread 与副作用时序。
|
|
553
|
+
|
|
554
|
+
### TypeScript 注意事项
|
|
555
|
+
- 参数对象要有明确类型;保持类型推导和公共签名,不用断言掩盖问题。
|
|
556
|
+
|
|
557
|
+
### React 注意事项
|
|
558
|
+
- 提炼函数不能违反 Hook 规则或制造 stale closure;保持事件/effect 顺序。
|
|
559
|
+
|
|
560
|
+
### Vue 注意事项
|
|
561
|
+
- 保持 `ref`/`reactive` 解包、computed 依赖和 composable 生命周期作用域。
|
|
562
|
+
|
|
563
|
+
### Frontend-Craft 前端适配
|
|
564
|
+
- 可使用 helper、handler、module、hook/composable 或 service,不为了“函数组合成类”而强制 class。
|
|
565
|
+
|
|
566
|
+
### 原创前端变换示例
|
|
567
|
+
- 将一个同时执行 parse、normalize、validate、submit 的提交函数拆成阶段,每一阶段都有明确输入/输出,并保持原有错误顺序。
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fec-refactoring-inheritance
|
|
3
|
+
description: 保持行为的前端重构主要涉及继承关系类重构,已经选定或正在评估对应手法,需要查询该 family 的操作步骤、风险与 JavaScript/TypeScript/React/Vue 适配时。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 继承关系类重构
|
|
7
|
+
|
|
8
|
+
## 概览
|
|
9
|
+
只有在证据和前置条件支持时才使用对应手法。一次只执行一个主要结构变换,并在完成后立即验证。
|
|
10
|
+
|
|
11
|
+
## 执行流程
|
|
12
|
+
1. 在[继承关系类重构详细卡片](references/inheritance-refactorings.md)确认手法和前置条件。
|
|
13
|
+
2. 记录受影响行为与差异预算。
|
|
14
|
+
3. 只执行该手法最小可行的一步。
|
|
15
|
+
4. 在组合下一手法之前验证当前步骤。
|
|
16
|
+
5. 公共契约、生命周期、状态身份或实际范围超出预期时停止并重新评估。
|
|
17
|
+
|
|
18
|
+
## 快速索引
|
|
19
|
+
详细 Reference 包含本 family 的 11 个标准手法,每项均包括意图、信号、不适用条件、操作步骤、行为保持检查、相关坏味道、组合关系、JS/TS/React/Vue 注意事项、前端适配和原创示例。
|
|
20
|
+
|
|
21
|
+
## 常见错误
|
|
22
|
+
- 只根据手法名称套用,不核对前置条件。
|
|
23
|
+
- 一个 diff 同时混入多个结构目标。
|
|
24
|
+
- 把经典 class 形式机械套进现代 React/Vue。
|
|
25
|
+
- 相关行为没有覆盖时,仅凭“测试通过”就声称行为已得到证明。
|