2

PHPの関数のメソッドパラメーターの形式にジレンマがあります(どの言語でもかまいません)。候補者1の2つの候補は次のとおりです。


function foo($param1,$param2,$param3,....$paramN) 

および

候補者2:


function foo ($arr) {
   $param1 = $arr['param1'];
   $param2 = $arr['param2'];
   $param3 = $arr['param1'];
   ...
   ...
   ...
   $paramN = $arr['paramN'];
}

多くのパラメータを持つメソッドがいくつかあるため、現時点では候補2に傾いています。しかし、私が候補者2の道を進むと、私のコードが読めなくなり、簡単に保守できなくなるリスクがあることも心配しています。候補者2も非常に魅力的ですが、これはパラメータの順序が無関係になるためです(したがって、メソッドのシグネチャ)が、デバッグがお尻の痛みになるのではないかと心配しています。

では、どちらが推奨される方法ですか?どの候補者を選ぶのか、そしてその理由は?

4

1 に答える 1

3

多くのパラメータを処理するのは決して良いことではありません。私は候補者2を選択します。これは、より拡張性があるためです。必要なすべてのパラメーターが正しく設定されていることを確認する検証ロジックを使用して、「混乱」を補うことができます。

-私の意見では-最善の方法は、コードをリファクタリングし、メソッドをいくつかの、おそらくチェーン可能な部分に分割して、複雑さを軽減することです。

また、値オブジェクト(または場合によってはデータ転送オブジェクト)を使用して、ある種の「コンテナー」ですべてのパラメーターを渡すこともできます。このようにして、値オブジェクトiselfがその内容を処理するため、有効なデータのみを渡すことができるようになります。

于 2012-11-11T20:31:59.953 に答える