PyCharm コードリファクタリング
コードリファクタリングとは、コードの外部動作を変更せずに、コードの内部構造を最適化するプロセスです。
リファクタリングの目的は、コードの可読性、保守性、拡張性を向上させることであり、新機能の追加やバグ修正ではありません。
PyCharm は Python 開発者に、強力かつ安全な自動リファクタリングツールを提供し、リファクタリングを効率的でエラーの少ないものにします。
よく使うリファクタリング操作の早見表
以下は、PyCharm で最もよく使用されるリファクタリング操作とそのショートカットキーの対照表です。
| リファクタリング操作 | ショートカットキー | 機能説明 |
|---|---|---|
| Rename | Shift + F6 | 変数、関数、クラス、ファイルなどのシンボル名を変更し、すべての参照を自動的に更新します |
| Extract Variable | Ctrl + Alt + V | 選択した式を変数に抽出します |
| Extract Method | Ctrl + Alt + M | 選択したコードブロックを独立したメソッドまたは関数に抽出します |
| Extract Constant | Ctrl + Alt + C | 選択したリテラルを定数に抽出します |
| Inline | Ctrl + Alt + N | 変数、メソッド、または定数をインライン展開し、不要な中間層を排除します |
| Change Signature | Ctrl + F6 | パラメータ名、型、デフォルト値、順序を含む、関数またはメソッドのシグネチャを変更します |
上記のショートカットキーは Windows/Linux のデフォルトのキーマップに基づいています。macOS ユーザーは Ctrl を Command に、Alt を Option に置き換えてください。
実践:変数の名前変更
名前変更は最も頻度の高いリファクタリング操作です。以下では、具体的な例を通して Rename の完全な流れを説明します。
物体の運動速度を計算するコードがあるとします。その変数名speedは十分に正確ではないため、変更する必要がありますvelocity。
リファクタリング前の元のコード
例
def calculate_motion(distance, time):
speed = distance / time # speed は速さ(スカラー)に近く、velocity はベクトル速度をより強調します
return speed
result = calculate_motion(100, 10)
print(result)
操作手順
- カーソルを変数名speedの上に置きます。
- ショートカットキーShift + F6を押すと、PyCharm はその変数のすべての参照箇所をハイライトします。
- 新しい名前velocityを直接入力すると、PyCharm は変更されるすべての位置をリアルタイムでプレビューします。
- を押してEnter確認すると、すべての参照が同期して更新されます。
変数をダブルクリックして選択し、右クリックして、表示されたメニューから「リファクタリング」→「名前の変更」を選択することもできます:

表示されたウィンドウで名前を変更します:

リファクタリング後のコード
例
def calculate_motion(distance, time):
velocity = distance / time # 変数名は speed から velocity に名前変更されました
return velocity
result = calculate_motion(100, 10)
print(result)

PyCharm の Rename リファクタリングは、プロジェクト全体で参照を検索し、コメントや文字列内の参照も含めて、漏れがないようにします。
ワンキーでリファクタリングメニューを表示
さまざまなリファクタリング操作のショートカットキーを覚えていない場合は、万能ショートカットキーCtrl + Alt + Shift + T(macOS ではCommand + Option + Shift + T)でリファクタリングメニューを表示できます。
このメニューには、現在のカーソル位置で使用可能なすべてのリファクタリング操作が一覧表示されるので、メニューで選択するだけで済みます。
この方法は、あまり使用しないリファクタリング操作や、初心者の移行手段として適しています。
リファクタリング前のプレビュー機能
リファクタリングを実行する前に、PyCharm はPreviewプレビュー機能を提供しており、確認する前にリファクタリングの影響範囲を完全に把握できます。
リファクタリングのショートカットキーを押すと、PyCharm はダイアログを表示します。そこにはPreviewボタンが含まれています。
Preview ボタンをクリックすると、PyCharm は下部に比較ウィンドウを開きます。左側は変更前のコード、右側は変更後のコードです。
各変更を一つずつ確認し、保持するかスキップするかを決定できます。問題がないことを確認したら、Do Refactorをクリックしてリファクタリングを実行します。
大規模なプロジェクトやコアモジュールをリファクタリングする場合は、予期しない変更によるバグを防ぐため、Preview 機能を使用することを強くお勧めします。
リファクタリングの注意事項
PyCharm のリファクタリングツールは非常に信頼性が高いですが、リファクタリング時には次の点に注意する必要があります。
- リファクタリング前に、コードがバージョン管理システムにコミットされていることを確認し、問題が発生した場合にロールバックできるようにしてください。
- リファクタリング後は、既存のユニットテストをすぐに実行し、動作が変更されていないことを確認します。
- 一度に1つのリファクタリング操作だけを行い、同時に多くの内容を変更して混乱を招かないようにします。
- リファクタリングがパブリック API に関連する場合は、すべての呼び出し元がリファクタリングの範囲に含まれていることを確認してください。
これらのリファクタリングテクニックを習得すれば、コードは常に整然とし、明確で、保守しやすい状態を保てます。
その他の拡張