PyCharm リファクタリングチュートリアル
このチュートリアルの内容
このチュートリアルでは、有理数を利用する単純なクラスの例を使用して、PyCharm で利用可能ないくつかのリファクタリングを示します。
前提条件
次の前提条件が満たされていることを確認してください。
PyCharm バージョン 2016.2 以降で作業しています。
プロジェクトはすでに作成されています。
例の準備
プロジェクトに Python ファイル rational.py を作成し、次のコードを追加します。
有理数を単純化する
分子と分母を最大公約数で除算して有理数を単純化しましょう:
メソッドの抽出
ここでは、最も大きな共通の除数の検索を別の方法に抽出しましょう。これを行うには、ステートメントを選択します
そして Ctrl+Alt+M を押します。開いたダイアログでメソッド名 gcd
を入力し、OK をクリックします。
ローカル変数のインライン化とメソッドシグネチャーの変更
変数のインライン化リファクタリングを使って、変数 factor
を取り除きましょう。そのためには、変数にキャレットを置いて Ctrl+Alt+N を押します。検出された factor
変数はすべてインライン化されています。
次に、シグネチャーの変更を使ってパラメーター名を変更します。そのためには、メソッド宣言行にキャレットを置き、Ctrl+F6 を押します。開いたダイアログで、パラメーター denom
と num
をそれぞれ x
と y
に名前変更し、 をクリックしてパラメーターの順序を変更します。
次のコードで終わります:
クイックフィックスの使用
既存の静的メソッドを関数に変換しましょう。これを行うには、Alt+Enter を押し、候補リストから static メソッドを関数に変換するを選択し、Enter を押します:
関数を別のファイルに移動する
それでは、関数を別のファイルに移動して import ステートメントを追加します。そのためには、関数 gcd
宣言にキャレットを置き、F6 を押します。開いたダイアログで、宛先ファイル util.py の完全修飾パスを指定します。このファイルは存在しませんが、自動的に作成されます。
インポート文も自動的に追加されます。ファイル rational.py は次のようになります。
クラス Rational のさらなる変更
マジックメソッドの追加
次に、クラス Rational
のオブジェクトに対する加算 / 減算演算用のマジックメソッドの宣言を追加しましょう。
メソッドの抽出とクイックフィックスの使用
次に、式 Rational(other, 1)
を別のメソッドに抽出します。これを行うには、前述の式にキャレットを置き、Ctrl+Alt+M を押し、開いたダイアログに新しいメソッド名 from_int
を入力します。
最後に、メソッド from_int
宣言にキャレットを置き、Alt+Enter を押し、候補リストからメソッドを static にするを選択し、Enter を押します。
最後に、パラメーターの名前を other
から number
に変更しましょう。これを行うには、パラメーターにキャレットを置き、Shift+F6 を押します。
スーパークラスの抽出
次に、メソッド __radd__
、__sub__
、__rsub__
の実装をスーパークラスに移動します。また、メソッド __neg__
と __add__
を抽象化します。
その方法は次のとおりです ... クラス Rational
宣言にキャレットを置き、コンテキストメニューで をポイントし、 を選択します。次に、開いたダイアログでスーパークラスの名前 (ここでは AdditiveMixin
) を指定し、スーパークラスに追加するメソッドを選択します。メソッド __neg__
および __add__
の場合、列 abstract にするのチェックボックスを選択します。詳細については、「スーパークラスの抽出」を参照してください。
次のコードで終了します。
関連ページ:
メソッドの抽出ダイアログ
JavaScript コンテキストでは、ダイアログのタイトルが関数の抽出に変更される場合があります。名前このフィールドには、選択したソースコードに基づいて生成する関数またはメソッドの名前を指定します。パラメーターこの領域で、新しいメソッド / 関数に渡すパラメーターを選択します。上 / 下に移動これらのボタンを使用して、パラメーターの順序を変更します。シグネチャープレビューこの読み取り専用フィールドに、新しいメソッド / 関数の宣言を表示します。出力変数この読み取り専用フィールドは、メソッド本文...
インライン化
インライン化リファクタリングでは、メソッドまたは変数の導入リファクタリングを元に戻すことができます。インライン化するコードフラグメントにキャレットを配置します。を押します。または、コードフラグメントを右クリックして、メニューに移動します。必要なインラインリファクタリングを選択します。インライン化ダイアログで、インライン化オプションを指定します。プレビューと変更の適用、変数のインライン化:変数のインライン化リファクタリングは、冗長な変数の使用をイニシャライザーに置き換えます。変数は宣言時に初期化
シグネチャーの変更
シグネチャーの変更リファクタリングは、関数シグネチャーに適用できるいくつかの異なる変更を組み合わせます。このリファクタリングを使用して、次のことができます。関数名を変更する、パラメーターの追加、削除、並べ替え、パラメーターにデフォルト値を割り当てます、関数のシグネチャーを変更すると、PyCharm は関数のすべての使用箇所を検索し、変更、反映、変更を安全に修正できる関数のすべての呼び出し、実装、置き換えを置き換えます。パラメーターの追加赤色でハイライトされている値をクリックします。を押してパラメ...
スーパークラスの抽出
スーパークラスの抽出リファクタリングを使用すると、既存のクラスのスーパークラスを作成できます。元のクラスのメンバーをスーパークラスに移動できます。メソッドの場合、スーパークラスでメソッドを抽象として宣言して、メソッド宣言のみを転送できますが、実装は転送できません。その結果、スーパークラスと、スーパークラスを継承する元のクラスが作成されます。スーパークラスを抽出するエディターのクラス内にキャレットを配置します。メインメニューからを選択するか、コンテキストメニューからを選択します。スーパークラスの抽...
コードリファレンス情報
このセクションでは、シンボルの定義を表示し、ドキュメント参照を表示し、ビューパラメーター情報機能を使用する方法について説明します。パラメーター情報:パラメーター情報ポップアップには、メソッド呼び出しと関数呼び出しのパラメーターの名前が表示されます。PyCharm は、エディターで左括弧を入力するか、候補リストからメソッドを選択すると、1 秒 (1000 ミリ秒) 以内に、使用可能なすべてのメソッドシグネチャーを含むポップアップを自動的に表示します。ポップアップが閉じている場合、または IDE...