インライン化
インライン化リファクタリングでは、メソッドまたは変数の導入リファクタリングを元に戻すことができます。
インライン化するコードフラグメントにキャレットを配置します。
Ctrl+Alt+N を押します。または、コードフラグメントを右クリックし、メニューから必要なインラインリファクタリングを選択します。
インライン化ダイアログで、インライン化オプションを指定します。

(オプション)変更をプレビューするには、プレビューを選択します。
プレビューと変更の適用
現在、CLion は、メソッドの抽出リファクタリングの反対である関数のインライン化リファクタリングを提供しています。
変数のインライン化
変数のインライン化リファクタリングは、冗長な変数の使用をイニシャライザーに置き換えます。
変数は宣言時に初期化する必要があります。初期値がコードのどこかで変更された場合、変更前の出現箇所のみがインライン化されます。
前 | 後 |
|---|---|
import math
class Solver:
def demo(self):
a = 3
b = 25
c = 46
# This variable will be inlined
return_type_of_sqrt = math.sqrt(b ** 2 - 4 * a * c)
root1 = (-b + return_type_of_sqrt) / (2 * a)
root2 = (-b - return_type_of_sqrt) / (2 * a)
print(root1, root2)
Solver().demo()
|
import math
class Solver:
def demo(self):
a = 3
b = 25
c = 46
# This variable will be inlined
root1 = (-b + math.sqrt(b ** 2 - 4 * a * c)) / (2 * a)
root2 = (-b - math.sqrt(b ** 2 - 4 * a * c)) / (2 * a)
print(root1, root2)
Solver().demo()
|
インラインメソッドまたはインライン関数
メソッドのインライン化は、メソッドの本体をその呼び出し元の本体に配置します。メソッドまたは関数のインラインリファクタリングを開始すると、PyCharm はリファクタリング後にメソッド宣言を削除するかそのままにするかを選択するように要求します。選択に応じて、リファクタリングの結果は異なります。
前 | 後 |
|---|---|
def say_state(self):
print_state(self)
def print_state(self):
print("I'm going {} kph!".format(self.speed))
|
def say_state(self):
print("I'm going {} kph!".format(self.speed))
|
前 | 後 |
|---|---|
def say_state(self):
print_state(self)
def print_state(self):
print("I'm going {} kph!".format(self.speed))
|
def say_state(self):
print("I'm going {} kph!".format(self.speed))
def print_state(self):
print("I'm going {} kph!".format(self.speed))
|
PyCharm がいくつかのメソッドや関数のインライン展開を発見すると、リファクタリングプレビューが可能になります。インライン化リファクタリングダイアログのプレビューボタンをクリックして発生を評価します。

インライン展開を完了するには、リファクタリング実行ボタンをクリックしてください。
特定の呼び出しをインライン化するには、キャレットをその位置に置き、Ctrl+Alt+N を押して、インライン化リファクタリングダイアログでこの呼び出しのみを使用して宣言を維持するオプションを選択します。
リファクタリングの制限
PyCharm は、以下のカテゴリのメソッドと関数のインラインリファクタリングをサポートしません。
デコレータとして使われる関数
参照として使用される機能
引数を使用して関数を展開する
ジェネレーター
非同期関数
コンストラクター呼び出し
ビルトイン関数
デコレータを使った機能
再帰関数
* 引数を持つ関数
オーバーライドされた機能
グローバル変数を持つ関数
非局所変数を持つ関数
別の関数宣言を持つ関数
制御フローを中断する機能
これらの関数またはメソッドのいずれかに対してリファクタリングを実行しようとすると、警告メッセージが表示されます。

関連ページ:
メソッドの抽出
メソッドの抽出リファクタリングを使用すると、グループ化できるコードフラグメントを取得し、別のメソッドに移動して、古いコードをメソッドの呼び出しに置き換えることができます。メソッドを抽出する際には、変数を確認する必要があります。出力変数が 1 つしかない場合、抽出されたメソッドの戻り値として使用されます。出力変数が複数ある場合、メソッドの抽出リファクタリングが適用されず、エラーメッセージが表示されることがあります。この場合、メソッドの抽出を動作させるためのいくつかの回避策があります。例: すべての...
スーパークラスの抽出
スーパークラスの抽出リファクタリングを使用すると、既存のクラスのスーパークラスを作成できます。元のクラスのメンバーをスーパークラスに移動できます。メソッドの場合、スーパークラスでメソッドを抽象として宣言して、メソッド宣言のみを転送できますが、実装は転送できません。その結果、スーパークラスと、スーパークラスを継承する元のクラスが作成されます。スーパークラスを抽出するエディターのクラス内にキャレットを配置します。メインメニューからを選択するか、コンテキストメニューからを選択します。スーパークラスの抽...
インライン化ダイアログ
変数のインライン化ダイアログ:変数のインライン化リファクタリングを使用すると、冗長変数をその値に置き換えることができます。例を参照してください。メニュー項目またはキーボードショートカットから変数のインライン化ダイアログにアクセスするには、インライン化する変数にキャレットを置きます。Inline variable <variable name>? (<the number of variable occurrences>)2024 年 10 月 23 日インラインブール値...