関数宣言の変更機能宣言の変更

4424 ワード


背景


関数はプログラムを小さな部分に分ける主な手段である.関数宣言は、各部分が相互に接続される方法を表し、実質的にソフトウェアシステムコンポーネントの接続部分である.建物と同様に、ソフトウェアもこれらの接続にかなり依存しています.接続点を定義すれば、システムに新しい部分を追加しやすく、定義が適切でないと、継続的な干渉要因をもたらし、ソフトウェアの動作を把握しにくくなり、需要が変化した場合に適切な修正が困難になります.幸いソフトなので接続先を変更できます.でも気をつけて.
これらの接続で最も重要な要素は、関数の名前です.名前が良い場合は、関数の実装コードを表示する必要はありません.呼び出し文を表示するだけで、何をしているのかがわかります.しかし、良い名前を思いつくのは難しい.良い名前を思い出す有効な方法があります.関数の目的を注釈で説明することです.そうすると、議長がいい名前を変えて帰ってくることがあります.
関数のパラメータも同じです.パラメータは、関数と外部世界の融合方法を定義します.パラメータは、関数を使用するコンテキストを設定します.パラメータにより,関数の使用範囲を拡大するだけでなく,他のモジュールとの結合も除去できる.動作に必要なモジュール数が少ないほど,あるコンテンツを修正する際に頭の中に置く必要があるコンテンツは少なくなる.

プログラム


簡単な手順

  • パラメータを削除するには、まず、削除するパラメータを参照する場所があるかどうかを関数本文で確認します.
  • メソッド宣言を所望の形式に変換します.
  • を参照する既存のメソッド宣言のすべての部分を見つけ、変更された形式に変更します.
  • テスト
  • .
  • 変更するものが2つ以上ある場合は、分けて処理したほうがいいです.したがって、名前とパラメータを同時に変更する場合は、それぞれ独立して処理します(問題が発生した場合は、タスクに戻り、移行プロセスに従います).

    移行プロセス

  • の後続の抽出ステップを簡略化する必要がある場合、関数の本文を適切に調整する.
  • 関数本文を新しい関数として抽出します.
  • 作成する新しい関数の名前が既存の関数の名前と同じである場合、検索しやすい名前は一時的に名前が付けられます.
  • で抽出された関数にパラメータを追加する必要がある場合は、「簡単な手順」に従って追加します.
  • テスト
  • .
  • の既存の関数をインラインします.
  • 一時的に
  • と命名された場合、関数宣言の置換をもう一度適用し、元の名前に戻します.
  • テスト
  • .
  • 例:簡単な手順


    before

    function circum(rad) {
       return 2 * Math.PI * rad;
    }

    after

    function circumference(radius) {
       return 2 * Math.PI * radius;
    }

    例:移行プロセス


    before

    function circum(rad) {
       return 2 * Math.PI * rad;
    }

    after

    function circum(radius) {
       return circumference(radius);
    }
    
    function circumference(radius) {
       return 2 * Math.PI * radius;
    }

    ソース


    マーティン・パラーゼ2版再構築