メソッドの抽出および導入リファクタリング
メソッドの抽出および導入リファクタリング リファクタリングを使用すると、グループ化できるコードフラグメントを取得し、別のメソッドに移動して、古いコードをメソッドの呼び出しに置き換えることができます。
メソッドを抽出する際には、変数を確認する必要があります。 出力変数が 1 つしかない場合、抽出されたメソッドの戻り値として使用されます。 出力変数が複数ある場合、 メソッドの抽出リファクタリングが適用されず、エラーメッセージが表示されることがあります。
この場合、 メソッドの抽出を動作させるためのいくつかの回避策があります。 例: すべての出力値を含む特別な data-class を導入することができます。
メソッドを抽出する
エディターで、メソッドまたは関数に変換するコードブロックを選択します。
メインメニューから「 」を選択するか、「Ctrl+Alt+M 」を押します。 または、コンテキストメニューから「 」を選択します。
表示される メソッドの抽出および導入リファクタリング ダイアログで、新しい機能の名前を指定します。
パラメーター 領域で、次の操作を行います。
対応するチェックボックスをオンまたはオフにして、メソッドパラメーターとして渡される変数を指定します。
必要なパラメーターの名前を変更し、対応するパラメーター行を double-clicking で変更し、新しい名前を入力します。
シグネチャープレビュー ペインで結果を確認し、 OK をクリックして必要な機能を作成します。
選択されたコードフラグメントは関数呼び出しに置き換えられます。
サンプル

前 | 後 |
|---|---|
from enum import Enum
class Category(Enum):
A = 1
B = 2
C = 3
def calculate_tax(category, income):
if category == Category.A:
discount = 10
elif category == Category.B:
discount = 5
else:
discount = 0
return income * (100 - discount) / 100
|
from enum import Enum
class Category(Enum):
A = 1
B = 2
C = 3
def calculate_tax(category, income):
discount = calc_discount(category)
return income * (100 - discount) / 100
def calc_discount(category):
if category == Category.A:
discount = 10
elif category == Category.B:
discount = 5
else:
discount = 0
return discount
|
重複の処理
重複するコード箇所が見つかった場合、PyCharm はそれらを抽出したメソッドの呼び出しに置き換えることを提案します。
2026 年 6 月 1 日