Mark Ku's Blog
VS Code 擴充套件

Refactory

懂專案慣例的重構:介面放哪、DI 註冊寫在哪、'use client' 該不該加。通用工具不知道的事,它從你的 repo 學。

34
重構動作
18
支援語言
534
自動化測試
免費使用不載入 solution · 不拖慢 VS Code
Refactor This — Ctrl+Alt+Shift+T
Refactor This 聚合選單

介紹影片

一分鐘看懂 Refactory 解決什麼問題

和其他重構/檢查工具差在哪

六件事,是裝了它跟沒裝它的差別

🏠

產出來的碼,看起來像同事寫的

其他工具

套一份固定範本:介面丟進它自己喜歡的資料夾,欄位命名、this.、XML doc 全都跟隔壁那個檔不一樣,於是 PR 有一半的留言在講排版。

Refactory

慣例是從被編輯的那個 class 和它的鄰居「量」出來的 —— 你用底線它就用底線、你寫 XML doc 它就補 XML doc、Extract Interface 放進你 repo 真的在用的那個資料夾。生出來的碼直接過你自己的 analyzer。

🛡️

不確定就拒絕,而且告訴你是哪一個值

其他工具

型別推不出來就塞一個 any,建構子少一個參數就補 null! —— 編得過、跑起來才炸,而且 code review 完全看不出來。

Refactory

每個重構只有三種狀態:可用、有警告(強制走 Preview),或不可用並附上你看得懂的理由。看似合理但其實錯的結果,是唯一沒有任何後續關卡擋得住的東西,所以寧可不做。

🔥

它回答「先修哪一個」,不是丟給你 800 條警告

其他工具

一次噴幾百條 warning,每一條看起來都一樣重要,於是整包被 disable 掉,再也沒人看。

Refactory

熱點 = git 修改頻率 × 複雜度。沒人碰的複雜檔不是急事,每週都在改的複雜檔才是;儀表板直接把最痛的十個檔案排給你,點一下就跳過去。

📈

「這個月有沒有變好」有答案

其他工具

只回答「現在有幾個問題」,沒有昨天可以比。想看趨勢就得架 SonarQube 那種伺服器、接 CI、還要有人維護。

Refactory

每次掃描存一份快照(保留 100 筆),畫成趨勢圖,還逐條規則告訴你多了幾筆少了幾筆:+3 cs.magicNumber、−2 react.indexAsKey。全部在本機,零伺服器、零帳號。

🤖

AI 是你的,不是外掛的

其他工具

要註冊、要訂閱、要把你的原始碼送到別人的伺服器,再按 token 跟你收錢。

Refactory

它只負責寫 prompt,跑的是你自己電腦上的 claude CLI —— 你的登入、你的模型、你的核可流程,diff 是你看著它落地的。原始碼不離開你的機器,這個外掛連你的 API key 都拿不到。沒裝 Claude Code?其餘功能照樣全開。

🌐

13 種語言的日常重構,什麼都不用裝

其他工具

Invert if、Merge nested if、Introduce variable 這些,JetBrains 系 IDE 有十五年了,VS Code 幾乎沒有任何語言有;有的也得先裝語言伺服器、載入專案。

Refactory

Python、Go、Java、Kotlin、Rust、PHP、C、C++、Objective-C、Dart、Swift、Scala 全都有,靠的是一次詞法掃描 —— 不用 language server、不用 SDK、不用載入專案。在一個什麼都沒裝的 VS Code 打開 .go 檔,這些照樣出現。

三個引擎,各管一件事

不重造編輯器已經有的東西 —— 只補上沒人做的

⚛️

TypeScript / React 引擎

抽元件(同檔/新檔)、抽 hook、safe delete、改 prop 名稱含所有呼叫點、import 路徑轉換、'use client' 邊界診斷 —— JavaScript 與 JSX 一併適用。

TS · TSX · JS · JSX

🧩

C# 引擎(Roslyn sidecar)

加注入依賴(六處協同編輯)、Extract Interface 到你的 repo 實際使用的資料夾、介面成員同步到所有實作、DI 註冊、控制器 clone 到下一個 API 版本。

C# · .NET 8

🌐

多語言 lexer 引擎

Invert if、Merge / Split if、Introduce / Inline variable、De Morgan、轉插值字串 —— 不用 language server、不用 SDK、什麼都不用裝。

Python · Go · Java · Kotlin · Rust · PHP · C · C++ · Obj-C · Dart · Swift · Scala

主要功能

為了「產生的碼像鄰居寫的」而生的細節

🎯

Refactor This 聚合選單

一個按鍵列出這個位置所有能做的事,內建重構與 Refactory 並列;不可用的動作也列出來,附上原因。

🏠

慣例感知

Extract Interface 的目標資料夾從鄰居 class 學出來;欄位底線、this.、XML doc 從被編輯的 class 量測,不是從設定讀。

🔗

方案級多檔操作

加注入依賴一次落地六處編輯:using、欄位、XML doc、建構子參數、<param> 標籤、賦值 —— 一個 undo stop。

⚛️

React 語義

抽元件自動推導 props 型別、'use client' 逐字帶到新檔、module 常數 export 而不是複製。

✏️

IDE 等級 linked edit

命名時呼叫點、interface、函式、型別引用四處同時進入編輯狀態,打一次字全部一起改。

🛡️

拒絕比功能更重要

推不出型別就拒絕並指名、dependency array 絕不修改、有手動 new 就不注入 —— 不確定的事明說,不用近似值猜。

不拖慢編輯器

不載入 solution、不載入 TypeScript program;跨檔問題用宣告索引與 import graph 回答,上千個檔案一秒內建完。

📝

專案慣例檔

.refactory.json 進版控 —— 慣例是專案的屬性,不是個人偏好;沒寫的欄位用偵測的。

🔍

37 條 code smell 檢查

React / C# 的「編得過但之後會痛」即時畫波浪線:sync-over-async、元件裡定義元件、state 原地 mutate。會炸的是 warning、品味是 hint。

📊

Code Health 儀表板

整個工作區掃一輪(不開檔、不灌爆 Problems),依檔案或規則分組、八種主題,Copy report 直接貼 PR。

📐

複雜度與 A–F 健康分數

每個函式、方法、建構子的循環複雜度,兩個引擎用同一套計數規則,混合 repo 的數字可以直接比;每個檔案給一個 0–100 分與 A–F 等第,外加全工作區「最複雜函式」排行。

🕰️

掃描歷史與趨勢

每一次完成的工作區掃描存一份快照(保留 100 筆),畫成趨勢圖,並列出對上一次的逐條規則增減。中途取消的掃描不記錄,免得畫出假的進步。

🔥

熱點:churn × 複雜度

整個 repo 一次 git log,跟健康分數 join 起來排名 —— 常改又複雜的檔案排最前面。不是 git repo?這一段直接不出現,不會跳錯誤。

深度審查 briefing

任一檔案或熱點按 ✦ Review,把度量、churn、熱點名次與每一條 finding 寫成 markdown briefing,再開你自己的 claude session 指過去;Review top 3 一次評三個最危險的檔案,因為「先做哪一個」不是只看得到一個檔的 session 能回答的。

🤖

Fix with Claude Code

quick fix 直接開本機 claude session 修這條 smell:你的登入、你的模型、你的核可流程,外掛只寫 prompt。

🧹

Clean Up This File

只有一種正確改法的機械性修復一次全部套用(throw ex; → throw; 等),一個 undo 全部退回。

實機截圖與錄影

全部都是真實編輯器的截圖與錄影,不是示意圖

Refactor This 聚合選單

Refactor This 聚合選單

內建重構與 Refactory 並列同一選單,最近用過的動作浮到最上面,不可用的附理由。

React 抽元件(實機錄影)

React 抽元件(實機錄影)

選取 JSX、執行、原地命名 —— props 從捕捉到的值推導,四處同時 linked edit。

C# 加注入依賴(實機錄影)

C# 加注入依賴(實機錄影)

六筆編輯一次落地:using 依字母序插入、<param> 插在與參數位置相符的地方。

Refactor Preview 協同編輯

Refactor Preview 協同編輯

帶警告的計畫強制走 preview,每一筆編輯落地前都看得見。

Code Health 儀表板

Code Health 儀表板

37 條 smell 的工作區總覽:依檔案或規則分組、嚴重度過濾、點一下跳到那行,八種主題可選。

複雜度、趨勢與熱點

複雜度、趨勢與熱點

健康分數、最複雜函式排行、每次掃描的趨勢圖與逐條規則增減,以及 churn × 複雜度的熱點排名 —— 「該先修哪一個」的答案就在這一頁。

壞味道即時偵測(實機錄影)

壞味道即時偵測(實機錄影)

React 的問題在打字的當下就畫波浪線;問題一被改掉,波浪線與 Problems 同時消失 —— 不用存檔、不用等 CI 跑完才知道。

三個入口

位置決定一切 —— 沒有任何動作是「順便列出來」的

  • Refactor This 聚合選單 —— 三平台都沒被佔用的按鍵Ctrl+Alt+Shift+T
  • 原生 lightbulb 選單,Refactory 的動作嵌在所屬分組裡Ctrl+.
  • 對整個檔案操作的指令(例如整檔 import 轉換)Ctrl+Shift+P → Refactory

如何安裝

  1. 1

    在 VS Code 按 Ctrl+Shift+X 開啟擴充套件面板。

  2. 2

    搜尋「Refactory」,點擊 Install 安裝。

  3. 3

    打開任何一個支援語言的檔案,按 Ctrl+Alt+Shift+T 開始。C# 功能需要 .NET 8 runtime,找不到時只有 C# 那一半會關閉。

也可在 Marketplace 直接安裝,或在命令列執行下方指令。

讓重構懂你的專案慣例

免費使用、不拖慢 VS Code、原始碼不離開你的機器。34 個重構動作、37 條 code smell 檢查、A–F 健康分數與熱點排名、18 種語言,現在就到 Marketplace 安裝 Refactory。

Refactory — 懂專案慣例的 VS Code 重構外掛 | Mark Ku 的技術部落格 - Mark Ku's Blog