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