コード生成とリファクタリング

使用箇所からの作成

CLionでは、宣言される前に、関数や変数、データメンバー、クラスも使用できます。 IDEでは、それらが赤く強調表示され、クイックフィックスが推奨されます。 Alt+Enterを押して、適切な宣言 を追加できます。 関数の場合、CLionは、戻り値の型と 関数のパラメータの型を検出します。

インテンションアクション

インテンションは、正しいコードに自動的に変更を適用し、コードを改善したり、決まったコーディング作業を 容易にしたりします。 コンストラクタへのデータメンバーと初期化子の追加や、 論理式へのド・モルガンの法則の適用、typedefの導入、クラスからの 定義の移動など、いろんなことができます。 左側のエディタガターの電球は、 1つ以上のインテンションアクションが利用可能であることを示します。 適用するには、Alt+Enterを 押します。

「'Surround with」(囲み)とlive templates(ライブテンプレート)

ライブテンプレート(Code | Insert Live Templateで選択、またはCtrl+Jを押下)を使用して、 コード構成を丸ごと生成します。 すぐ使えるライブテンプレートは、設定に一覧が表示されています (Editor | Live Templates)。 このテンプレートは、 好きに拡張、および カスタマイズできます。 ライブテンプレートをコードで適用するには、ライブテンプレートの省略を入力してTabキーを押します。 次に、EnterかTabを使用して、テンプレートの変数を移動します。

コードを完全なコード構成で囲みたい場合は、「Surround with」のテンプレートも 考慮しましょう。 Code | Surround Withを選択するか、Ctrl+Alt+Tを押して、文脈によるif、while、 for、#ifdef、または他のラッパーを簡単に生成できます。

Generateメニュー

CLionのGenerateのメニューAlt+Insertを使用すると、入力時間を節約できます。

ワンクリックでセッター/ゲッター、コンストラクタ/デストラクタ、等価、関係、およびストリーム出力の演算子を生成。 生成時に使用するフィールドの選択、や「クラスメンバーとして生成」、「インプレース生成」、「演算子の実装にはstd::tieを使用」などのオプションを必要に応じて利用できます。

一部の演算子が既に存在する場合は、CLionは、不足している演算子を追加するか、既存の演算子をすべて置き換えることをお勧めします。

定義の実装、上書き、または生成

Implement functions(Ctrl+I)、Override functions(Ctrl+O)、およびGenerate Definitions(Shift+Ctrl+D)でコード生成の力を味わいましょう。

CLionはプロジェクトで使用しているパターンに適応するため、Generate in-place設定のデフォルト値がコードによって異なります。ヒューリスティックは最も一般的なケース(ヘッダーのみまたはcppのみのクラスなど)をサポートするために実装されています。

リファクタリング

CLionは、信頼できるリファクタリングを提供することで、コードの質の維持を手伝います。 リファクタリングすると、コード変更を安全にスコープ中に適用します。

現在の場所で利用可能なすべてのリファクタリングを表示するには、Refactor This... メニューを使用(Ctrl+Alt+Shift+T を押す)します。

リファクタリングの種類には次のリファクタリングが含まれます。

シンボル名を変更して、 コード中の参照を自動的に直すRename Shift+F6

Change Signature Ctrl+F6は、関数のパラメータの追加/削除/並び替え、および結果の型、または関数の名前の更新に役立ちます。全ての使用箇所が直されます。

Inline Ctrl+Alt+Nは、冗長な変数の使用箇所/関数の呼び出しを初期化子/宣言に置き換えます。

Extract (Function Ctrl+Alt+M, Typedef Ctrl+Alt+K, Variable Ctrl+Alt+V, Parameter Ctrl+Alt+P, Define Ctrl+Alt+D, Constant Ctrl+Alt+C, Lambda Parameter) — ここでは、CLion はユーザーがリファクタリングを呼び出すコードブロックを解析して、選択された式の入力・出力の変数と使用箇所を検出し、新たに作成されたユーザー選択のエンティティと置き換えます。

Pull Members Up/Downは、クラスメンバーを安全に基底/派生クラスに移動させます。

さらに….