Cita:
Iniciado por bandolera 1) Cuál es el criterio para crear los Value Objects, yo siempre he trabajado con VO según la salida que se necesita y no necesariamente tiene la estructura de la o las tablas.
el uso teorico de VO es siempre distinta al uso practico, ya que cada proyecto sera siempre diferente. y las implementaciones dependera de los objectivos que se quieran alcanzar, por ejemplo en PHP algunos suelen sacrificar el estandar de los Patrones de diseño, por el rendimiento generando código ilegible pero muy optimizado.
aunque lo correcto es que tus clases VO tienen que tener las propiedades de tu tabla, y los campos que no estan en tu tabla deberian ser metodos tipo Getters.
Cita:
Iniciado por bandolera 2) Es una buena práctica utilizar setters y getters en los VOs?
He leído que sugieren que los campos que no deben ser modificados no deben tener setters, pero en el caso de utilizar un formulario de actualización, la captura del valor que viene del formulario se hace con un setter. Significa que la actualización se debe hacer directamente hacia el campo ?
Pregunto porque no encuentro teoría al respecto.
la informacion que buscas debes hacer en ingles, en idioma español, la informacion pruebas , conceptos, sera muy escaso sobre todo si te enfoncas en un lenguaje.
pero personalmente, los setters solo los uso cuando el dato a ser ingresado por el usuario debe ser validado
si tengo un
Código PHP:
class usuario{
private $edad;
public $comentario;
public function __get($name){
return $this->{$name}
}
public function setEdad($numero){
$edad = intval($numero);
if($edad<1 || $edad >150){
Throw new Exception("Edad invalida ");
}
return $this;
}
}
en ese ejemplo, validar la edad puede ser importante, ya que se busca un numero, pero un COmentario, no necesita ser validado, podria ,null .
contener, texto numero, flotantes, etc,
por lo que personalmente, no me gusta obligar el comportamiento innecesario de mis propiedades. por que agregarle a todos su setter respectivo seria un desperdicio de recursos, PERO si es un clase compartida en un proyecto de varios programadores, o si participo temporalmente en uno, los realizo, es como dejar algo Estandar, como se dicta en las normas de patrones de diseño, aunque eso sacrifique rendimiento. ya que tiene que ser algo entendible para los futuros encargados o equipo de programacion