Me pregunto, ¿cuál es la mejor práctica para la validación de objetos? ¿Hay algún argumento adicional contra el caso uno o el caso dos? ¿Hay otra manera?Validación de objeto simple en Java
No busco ninguna biblioteca de validación, solo quiero hacer una validación simple.
Caso Uno
class A {
public void doSomething(MyObject o) {
try {
validate(o);
doSomethingUseful(o);
} catch (ValidationException e) {
Logger.getLogger().warn(e);
}
}
private void validate(MyObject o) throws ValidationException
{
if (o.getXYZ() == null)
throw new ValidationException("Field XYZ cannot be null");
}
private void doSomethingUseful(MyObject o) { //some funny stuff }
}
caso de que dos
class A {
public void doSomething(MyObject o) {
if (validate(o)) {
doSomethingUseful(o);
} else
Logger.getLogger().warn("Object is invalid");
}
}
private boolean validate(MyObject o)
{
if (o.getXYZ() == null) return false;
return true;
}
private void doSomethingUseful(MyObject o) { //some funny stuff }
}
No hay una preferencia fuerte aquí. Más significativo, tal vez, es lo que hace para poder capturar múltiples defectos de validación en el mismo objeto, para que el usuario no tenga que seguir intentándolo una y otra vez para ver cuál es el próximo defecto. –
¿Por qué la validación en el caso dos tiene un 'throws ValidationException' si está trabajando con booleanos? –
@Damokles probablemente copie pegar – RMT