C++コードのリファクタリング

Visual Studio CodeのC/C++拡張機能には、ランタイムの動作を変更することなくコードの構造、可読性、保守性を向上させるための複数のリファクタリング機能が備わっています。これには、「メソッドの抽出」や「宣言および定義の作成」といった機能が含まれます。

宣言または定義の作成

関数の宣言や定義を作成するプロセスを簡略化し、C/C++拡張機能でこれらの項目を自動生成できます。この機能は、メンバ関数、クラスとしての名前空間、およびテンプレートに適用されます。

Create a definition and a declaration across two files

関数の宣言または定義を作成するには、以下のいずれかの方法で行います。

  • クラスの関数定義を選択し、コードアクション(電球アイコン)を選択してから、宣言の作成 (Create a Declaration) を選択します。同様に、定義を作成するには、関数宣言を選択し、コードアクションを選択してから、定義の作成 (Create a Definition) を選択します。
  • 関数の宣言または定義を右クリックし、コンテキストメニューから 定義/宣言の作成 (Create Definition/Declaration) を選択します。コードに基づいて、定義または宣言が作成されます。
  • 関数を選択し、コマンドパレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) を使用して Create Declaration/Definition コマンドを入力します。コードに基づいて、定義または宣言が作成されます。

定義や宣言が作成される場所は、コード内で以前に確立されたパターンに基づいています。たとえば、以前に同じファイル内で定義と宣言を追加していた場合、拡張機能も新しいものを同じファイルに追加します。関数の順序は自動的に維持されます。

Create a definition and a declaration in the same file

ソースファイルとは別のファイルに宣言や定義を記述している場合、拡張機能はその慣習に従います。たとえば、名前が一致するヘッダーファイルとソースファイルがある場合、ヘッダーファイルがソースファイルにインクルードされていない場合でも、両方が特定されます。この場合、宣言や定義が追加されると、ヘッダーファイルがソースファイルに自動的に参照されるようになります。

そうでない場合、拡張機能は現在のファイル名と一致する新しいヘッダーファイルまたはソースファイルを自動的に作成します。この新しいファイルには、生成された新しい宣言または定義が含まれます。また、新しいファイルは自動的に現在のファイルから参照されます。

テンプレートの場合、関数テンプレートがヘッダーファイル内で宣言されていると、その関数テンプレートの定義も同じヘッダーファイル内に作成されます。これは、クラステンプレートの非テンプレートメンバ関数にも適用されます。

宣言または定義のコピー

宣言や定義を追加する場所を選択したい場合は、コードアクション 宣言/定義のコピー (Copy Declaration/Definition) を使用できます。これにより、コードに直接追加する代わりに、宣言または定義をクリップボードにコピーできます。

このコードアクションを呼び出すには、クイックフィックスが利用可能な関数を選択し、コードアクション(電球)を選択してから、‘YourFunctionName’ の定義をコピー または ‘YourFunctionName’ の宣言をコピー を選択します。

Copy a declaration or definition

メソッドへの抽出

「メソッドの抽出」リファクタリング機能を使用すると、コードブロックを別のメソッドに抽出でき、コードの可読性の向上、重複の削減、およびコードのモジュール化に役立ちます。

メソッドを抽出するには、抽出したいC++コードを選択し、コードアクション(電球)を選択してから、関数へ抽出 (Extract to Function) を選択します。または、コードを右クリックして リファクタリング > 抽出 (Refactor > Extract) を選択するか、キーボードコマンド(Windowsでは Ctrl + Shift + R, Ctrl + E)を使用して詳細を確認できます。

その後、作成された新しい関数に名前を付けることができます。選択したコードを含む新しい関数は、現在の関数の上に配置されます。

Extract Method and create declaration

クイックフィックス/コードアクション

C/C++拡張機能は、コードのコンテキストに基づいて、C++コードを修正および改善するためのC/C++固有の提案を提供します。これらの提案を表示するには、シンボルの上にマウスカーソルを合わせるか、コードの横に表示されるコードアクション(電球)を選択します。たとえば、コードの一部をメソッドに抽出できる場合、電球アイコンを選択すると「メソッドへ抽出」が表示されます。前述の機能以外にも、C/C++拡張機能は以下のような状況でクイックフィックス/コードアクションを提供します。

不足しているヘッダーファイルの追加

C++コード内に不明なシンボルがあり、C/C++拡張機能がワークスペース内で正しいヘッダーファイルを特定できた場合、クイックフィックスが利用可能になります。クイックフィックスを選択すると、必要なヘッダーファイルのインクルードが現在のC++ファイルの先頭に追加されます。

Add Missing Include in code using a code action

次のステップ

詳細については、以下をお読みください。

その他に質問がある場合や問題が発生した場合は、GitHub にIssueを報告してください。問題を診断するために、拡張機能からのログ情報の提供をお願いする場合があります。ログの提供方法については、C/C++拡張機能のログ記録 を参照してください。

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