重構 C++ 程式碼

Visual Studio Code 中的 C/C++ 延伸模組提供多種重構功能,可協助您改善程式碼結構、可讀性與可維護性,且不會變更其執行階段行為。這些功能包括「擷取方法」以及「建立宣告與定義」。

建立宣告或定義

讓 C/C++ 延伸模組為您產生函式的宣告或定義,藉此簡化建立流程。此功能適用於成員函式、命名空間中的類別以及範本 (templates)。

Create a definition and a declaration across two files

若要建立函式宣告或定義,您可以:

  • 選取您的類別函式定義,選取「程式碼動作」(燈泡圖示),然後選取建立宣告。同樣地,若要建立定義,請選取函式宣告,選取「程式碼動作」,然後選取建立定義
  • 在函式的宣告或定義上按一下滑鼠右鍵,並從快顯功能表中選取建立定義/宣告。延伸模組會根據您的程式碼,自動建立定義或宣告。
  • 選取該函式,然後使用命令選擇區 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 並輸入命令建立宣告/定義。延伸模組會根據您的程式碼,自動建立定義或宣告。

定義與宣告的建立位置,取決於您先前在程式碼中建立的模式。例如,如果您先前在同一個檔案中新增了定義與宣告,延伸模組也會將新的項目新增至該檔案。函式的順序會自動維護。

Create a definition and a declaration in the same file

如果您在與來源檔案不同的檔案中定義了宣告或定義,延伸模組會遵循您的慣例。例如,若標頭檔與來源檔案名稱相符,即使標頭檔尚未包含在來源檔案中,兩者仍會被識別。在這種情況下,一旦新增了宣告或定義,您的標頭檔就會自動在來源檔案中被參照。

否則,延伸模組會為您建立一個名稱與目前檔案相符的新標頭檔或來源檔案。此新檔案包含已產生的新宣告或定義。新檔案隨後會自動在您的目前檔案中被參照。

針對範本,如果函式範本是在標頭檔中宣告,則該函式範本的定義也會建立在同一個標頭檔中。這同樣適用於類別範本的非範本成員函式。

複製宣告或定義

如果您想自行選擇要在程式碼中的何處新增宣告或定義,可以使用程式碼動作複製宣告/定義。這會將宣告或定義加入剪貼簿,而不是直接新增到程式碼中。

若要呼叫此程式碼動作,請選取一個具有「快速修復」功能的函式,選取「程式碼動作」(燈泡),然後選擇複製『YourFunctionName』的定義複製『YourFunctionName』的宣告

Copy a declaration or definition

擷取至方法

「擷取方法」重構功能可讓您將一段程式碼擷取至獨立的方法中,藉此改善程式碼可讀性、減少重複並提高程式碼的模組化程度。

若要擷取方法,請選取您要擷取的 C++ 程式碼,選取程式碼動作 (燈泡),然後選取擷取至函式。或者,在程式碼上按一下滑鼠右鍵並選取重構 (Refactor) > 擷取 (Extract),或使用鍵盤快速鍵 (Windows 為 Ctrl + Shift + R, Ctrl + E) 以取得更多資訊。

接著,您可以為所建立的新函式命名。包含您所選程式碼的新函式將被放置在目前函式的上方。

Extract Method and create declaration

快速修復/程式碼動作

C/C++ 延伸模組會根據您的程式碼內容,提供針對 C++ 的建議,協助您修復並改善程式碼。您可以將游標懸停在符號上並選取 QuickFix 連結,或選取程式碼旁邊出現的程式碼動作 (燈泡) 來查看這些建議。例如,如果某段程式碼可以擷取為方法,選取燈泡圖示即會顯示「擷取至方法」。除了上述功能外,C/C++ 延伸模組還在下列情況提供快速修復/程式碼動作:

新增遺漏的標頭檔

如果您的 C++ 程式碼中有未知的符號,且 C/C++ 延伸模組在您的工作區中識別出正確的標頭檔,則會提供快速修復功能。選取該快速修復,必要的標頭檔 include 指令就會被新增至您目前 C++ 檔案的最上方。

Add Missing Include in code using a code action

後續步驟

繼續閱讀以了解

如果您有任何其他問題或遇到任何問題,請在 GitHub 上提出 issue。我們可能會請您提供延伸模組的記錄資訊,以協助診斷問題。請參閱 C/C++ 延伸模組記錄以取得提供延伸模組記錄的協助。

© . This site is unofficial and not affiliated with Microsoft.