(Этот вопрос использует PHP как контекст, но не ограничивается только PHP. Например, любой язык со встроенным хешем также имеет значение)
Посмотрите на этот пример (PHP):
function makeAFredUsingAssoc()
{
return array(
'id'=>1337,
'height'=>137,
'name'=>"Green Fred");
}
Versus:
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
в равной степени приведет к ошибке, которая верна. Однако формальный класс просто чувствует себя более жестким для меня, но я не могу его оправдать.
Каковы будут плюсы и минусы использования каждого подхода и когда люди будут использовать какой подход?