インライン化
インライン化リファクタリングでは、メソッドまたは変数の導入リファクタリングを元に戻すことができます。
インライン化するコードフラグメントにキャレットを配置します。
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 は、以下のカテゴリのメソッドや関数に対するインラインリファクタリングをサポートしていません:
デコレータとして使われる関数
参照として使用される機能
引数を使用して関数を展開する
ジェネレーター
非同期関数
コンストラクター呼び出し
ビルトイン関数
デコレータを使った機能
再帰関数
* 引数を持つ関数
オーバーライドされた機能
グローバル変数を持つ関数
非局所変数を持つ関数
別の関数宣言を持つ関数
制御フローを中断する機能
これらの関数またはメソッドのいずれかに対してリファクタリングを実行しようとすると、警告メッセージが表示されます。
