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++ 拡張機能がワークスペース内の正しいヘッダーファイルを識別する場合、クイック修正が利用可能になります。クイック修正を選択すると、必要なヘッダーファイルのインクルードが現在の C++ ファイルの先頭に追加されます。
次のステップ
さらに読む
- C++ コードナビゲーション
- 基本的な編集 - 強力な VS Code エディターについて学習します。
- タスク - タスクを使用してプロジェクトをビルドなど
- デバッグ - プロジェクトでデバッガーを使用する方法を確認
他にご質問がある場合や問題が発生した場合は、GitHub で問題を提出してください。問題の診断に役立つよう、拡張機能からのログ情報の提供を求められる場合があります。C/C++ 拡張機能のログ記録 を参照して、拡張機能ログの提供方法を確認してください。