7

この質問は JavaScript の観点からのものですが、確かに他の言語にも当てはまる可能性があります。

私は最近、これにますます遭遇しており、いつメソッドを構築するかについて、ベストプラクティス、または少なくとも優れた設計標準があるかどうか疑問に思っていました.

私が見る明らかなオプションは次のとおりです。それぞれの簡単な例とともに

  • 複数の方法:

    this.makeGetRequest = function(controller){...}
    this.makeSynchronousGetRequest = function(controller){...}
    this.makePostRequest = function(controller, data){...}
    
  • より多くのパラメーターを持つ 1 つのメソッド:

    //data would be an optional parameter
    //  this.makeRequest("friends", "GET", true);
    //  this.makeRequest("friends", "POST", false, newFriend);
    this.makeRequest = function(controller, type, isSynchronous, data){...}
    
  • options パラメーターを使用した 1 つのメソッド:

    this.makeRequest = function(controller, type, options);
    this.makeRequest("friends", "POST", {data:newFriend, isSync:false});
    

HTTP リクエストの例は、質問の動機付けにすぎませんが、これは、さまざまな量のカスタマイズ/変数を使用する公開機能に対して機能します。

3つすべてが明らかに機能的です。しかし、良い習慣は何ですか?従う傾向がある標準またはガイドラインはありますか?

4

3 に答える 3

2

このパラメーターの利点は、options明快さを犠牲にすることなく無制限のオプションを使用できることです。誰かが指定しdata:たりisSync:、入力されている設定が明らかな場合。関数の 13 番目のパラメーターを に設定することを覚えておくとfalse、混乱の元になります。

したがって、最後の 2 つのオプションの間で、複数のパラメーターを使用するのは、(1) 合計パラメーターが 4 つ未満であり、(2) シーケンスが論理的で覚えやすい (URL、タイプ、データの順に)、および ( 3) オプションは 1 つ (最後の 1 つ) までです。とにかく、それは経験則としてです。

複数のメソッドとパラメータ化はどうですか? 複数のメソッドは、可能性の数が少ない場合 (GET と POST、UseDefaults と DontUseDefaults など) にのみ開始するオプションです。考えてみると、次の場合にのみ別のメソッドをセットアップする可能性があります。

  1. この区別は非常に重要です (同期リクエストは非同期リクエストとは根本的に異なる動作をするため、開発者にはどちらを適用するかを意識的に選択してもらいたいと思います。(対照的に、GET と POST はリクエストのもう 1 つのプロパティであり、すべてを網羅するものではありません)。 、あなたがそれを間違えた場合、契約を破る決定。)

  2. とにかく設定したい他のオプションはありません。最初に foo.get() を呼び出すか foo.post() を呼び出すかを覚えておかなければならない場合とにかくoptionsオブジェクトを入力することを忘れないでください。2 つの異なる場所で決定を下すように強制しているだけです。すべての設定を 1 か所にまとめたいと思います。

于 2012-07-12T17:47:16.377 に答える
1

最大限の柔軟性を得るためにjsonオプションを備えた「スーパーメソッド」を用意し、次に、最も一般的に使用される機能に簡単にアクセスできるように、より厳密に定義されたパラメーターを備えたいくつかのラッパーメソッドを用意するのはどうですか.

于 2012-07-12T17:48:00.167 に答える
1

明らかに、複数のメソッドでは、それらが呼び出す何らかの抽象的なスーパーメソッドが必要です。そうしないと、自分自身を繰り返すことになり、これは悪いと見なされますが、エイリアスや省略形などのメソッドがあると便利な場合があります (ie を参照)。$.getJSON()変更された-Call のjQuery $.ajax())

より多くのパラメーターを持つ1つのメソッドは、特別なケースまたはオプションのパラメーターがたくさんある場合、実際には柔軟ではありません。そのため、3番目の例で述べたようにオプションオブジェクトを使用します。

それは実際には、ユースケースと必要な柔軟性/再利用性にかかっています。個人的には、常にオプション パラメーターアプローチを使用する One メソッドを使用します。

于 2012-07-12T17:45:11.720 に答える