(この質問はコンテキストとしてPHPを使用しますが、PHPのみに限定されません。たとえば、ハッシュが組み込まれている言語も関連します)
この例(PHP)を見てみましょう:
function makeAFredUsingAssoc()
{
return array(
'id'=>1337,
'height'=>137,
'name'=>"Green Fred");
}
対:
class Fred
{
public $id;
public $height;
public $name;
public function __construct($id, $height, $name)
{
$this->id = $id;
$this->height = $height;
$this->name = $name;
}
}
function makeAFredUsingValueObject()
{
return new Fred(1337, 137, "Green Fred");
}
方法1はもちろん簡潔ですが、次のようなエラーが発生しやすい場合があります。
$myFred = makeAFredUsingAssoc();
return $myFred['naem']; // notice teh typo here
もちろん、それ$myFred->naem
が同様にエラーにつながると主張する人もいるかもしれませんが、それは真実です。しかし、正式なクラスを持つことは私にとってより厳格に感じますが、私はそれを本当に正当化することはできません。
それぞれのアプローチを使用することの長所/短所は何であり、人々はいつどのアプローチを使用する必要がありますか?