C++ コードのリファクタリング
Visual Studio Code の C/C++ 拡張機能には、実行時の動作を変更することなく、コードの構造、可読性、保守性を向上させるのに役立つ複数のリファクタリング機能があります。これには、「メソッドの抽出」や「宣言と定義の作成」などの機能が含まれます。
宣言または定義の作成
C/C++ 拡張機能にこれらを生成させることで、関数の宣言または定義を作成するプロセスを簡素化します。この機能は、メンバー関数、クラスとしての名前空間、およびテンプレートに適用されます。
関数の宣言または定義を作成するには、次のいずれかを行います
- クラス関数の定義を選択し、コード アクション (電球アイコン) を選択してから、[宣言の作成] を選択します。同様に、定義を作成するには、関数の宣言を選択し、コード アクションを選択してから、[定義の作成] を選択します。
- 関数の宣言または定義を右クリックし、コンテキスト メニューから [定義/宣言の作成] を選択します。コードに基づいて、定義または宣言が作成されます。
- 関数を選択し、コマンド パレット (⇧⌘P (Windows、Linux では Ctrl+Shift+P)) を使用して、コマンド [宣言/定義の作成] を入力します。コードに基づいて、定義または宣言が作成されます。
定義と宣言が作成される場所は、コードで以前に確立したパターンに基づいています。たとえば、以前に同じファイルに定義と宣言を追加した場合、拡張機能は新しいものも同じファイルに追加します。関数の順序は自動的に維持されます。
ソース ファイルとは異なるファイルで宣言または定義を定義した場合、拡張機能はその規則に従います。たとえば、一致する名前を持つヘッダー ファイルとソース ファイルの場合、ヘッダー ファイルがソース ファイルに含まれていなくても、両方が識別されます。この場合、宣言または定義が追加されると、ヘッダー ファイルは自動的にソース ファイルで参照されます。
それ以外の場合、拡張機能は現在のファイルの名前と一致する新しいヘッダーまたはソース ファイルを作成します。この新しいファイルには、生成された新しい宣言または定義が含まれます。新しいファイルは、現在のファイルで自動的に参照されます。
テンプレートの場合、関数テンプレートがヘッダー ファイルで宣言されている場合、その関数テンプレートの定義は同じヘッダー ファイルに作成されます。これは、クラス テンプレートの非テンプレート メンバー関数にも適用されます。
宣言または定義のコピー
宣言または定義をコードに追加する場所を選択したい場合は、コード アクション [宣言/定義のコピー] を使用できます。これにより、宣言または定義がコードに直接追加されるのではなく、クリップボードに追加されます。
コード アクションを呼び出すには、クイック修正が利用可能な関数を選択し、次にコード アクション (電球) を選択して、['YourFunctionName' の定義をコピー] または ['YourFunctionName' の宣言をコピー] を選択します。
メソッドへの抽出
メソッドの抽出リファクタリング機能を使用すると、コードのブロックを別のメソッドに抽出し、コードの可読性を向上させ、重複を減らし、コードをよりモジュール化することができます。
メソッドを抽出するには、抽出したい C++ コードを選択し、コード アクション (電球) を選択してから、[関数に抽出] を選択します。または、コードを右クリックして [リファクター] > [抽出] を選択するか、キーボード コマンド (Windows では Ctrl + Shift + R, Ctrl + E
) を使用して詳細情報を取得します。
その後、作成された新しい関数に名前を付けることができます。選択したコードを含む新しい関数は、現在の関数の上に配置されます。
クイック修正/コード アクション
C/C++ 拡張機能は、コード コンテキストに基づいて C++ コードを修正および改善する方法について、C/C++ 固有の提案を提供します。これらの提案は、シンボルにカーソルを合わせて [クイック修正] リンクを選択するか、コードの横に表示されるコード アクション (電球) を選択することで表示できます。たとえば、コードの一部をメソッドに抽出できる場合、電球アイコンを選択すると [メソッドへの抽出] が表示されます。上記の機能以外に、C/C++ 拡張機能は次の状況でクイック修正/コード アクションを提供します
不足しているヘッダー ファイルの追加
C++ コードに不明なシンボルがあり、C/C++ 拡張機能がワークスペース内で正しいヘッダー ファイルを識別した場合、クイック修正が利用可能になります。クイック修正を選択すると、必要なヘッダー ファイルの include が現在の C++ ファイルの先頭に追加されます。
次のステップ
さらに読む
- C++ コード ナビゲーション
- 基本的な編集 - 強力な VS Code エディターについて学習します。
- タスク - タスクを使用してプロジェクトをビルドするなど
- デバッグ - プロジェクトでデバッガーを使用する方法を調べる
その他ご質問がある場合や問題が発生した場合は、GitHub で issue を提出してください。問題の診断に役立てるため、拡張機能からのログ情報の提供を求められる場合があります。拡張機能のログを提供する方法については、C/C++ 拡張機能のログ記録 を参照してください。