0

クラス内のメソッドで変数を使用する2つの方法を取り上げています。一部のメソッドでは、最大20個の変数が使用されます。どの例がOOPプログラミング構造を最もよく満たすのか、そしてその理由

**Example 1:**

$sampleclass->variable1 = 100;
$sampleclass->variable2 = 200;
$sampleclass->variable3 = 300;

$row = $sampleclass->Method();

--------------------------

class sampleclass {

  public function Method(){
    if ($this->variable1) {
         // do something
    }
     if ($this->variable2) {
         // do something
    }
     if ($this->variable3) {
         // do something
    }

  }
}



============================================

**Example 2:**

$row = $sampleclass->Method(100,200.300);


class sampleclass {

  public function Method($variable1, $variable2, $variable3){

  }
}
4

4 に答える 4

1

デメテルの法則により忠実な 2 番目の方法:

http://en.wikipedia.org/wiki/Law_of_Demeter

于 2012-09-28T00:41:25.613 に答える
0

おそらく、変数ごとにメソッドを作成することを検討する必要がありますか?つまり、3つの値すべてに対して異なることを行う必要がある場合は、各変数の割り当てをカプセル化できます。

例えば:

class sampleclass 
{

  public function doSomethingWithA($value) 
  {
    $this->valueA = $value * 2;
  }

  public function doSomethingWithB($value) 
  {
    $this->valueB = $value * 3;
  }

  public function doSomethingWithC($value) 
  {
    $this->valueC = $value * 2;
  }

}
于 2012-09-28T00:44:36.433 に答える
0

これらの変数をオブジェクトに格納したい場合は、それらの (プライベート) データ メンバーを設定します。また、「ゲッター」またはミューテーター関数を定義するか、少なくともこれらのデータ メンバーに必要な値を取るコンストラクターを定義する必要があります。これらの関数は、データが直接設定されるのを防ぎます。これにより、データの値に関するルールを適用し、不適切または矛盾した値に変更されるのを防ぐことができます。

于 2012-09-28T00:50:58.853 に答える
0

TL;DR :どちらでもない。


3 つの異なる条件に基づいて 3 つの異なる実行がある場合は、それぞれに個別のメソッドが必要です。結果の API は次のようになります。

$instance->someMethod( 100 );
$instance->differntMethod( 200 );
$instance->thirdMethod( 300 );
$result = $instance->produceResult();

オブジェクトは状態を保持することになっています。その状態を変更する 3 つの異なる方法があります。そして、データを返す 1 つのメソッド。ifステートメントは必要ありません。

この主題についてもう少し学ぶために、これこの講義を見ることをお勧めします。

于 2012-09-28T00:53:34.717 に答える