Ver Mensaje Individual
  #16  
Antiguo 03-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Yo caigo dentro del primer grupo

Código Delphi [-]
function Foo: Boolean;
begin
  Result := CalcSomething > 0;  
end;

La pregunta del millon es, si en CalcSomething se eleva una excepcion, realmente importa el valor de retorno de Foo?

A mi modo de ver las cosas no, ya que si ocurrio una excepcion (algo que no deberia haber pasado y que esta fuera del control de mi programa)

Otra alternativa es usar Nullables. En delphi no vienen de serie pero se implementan facilmente. Tambien hay frameworks que los implementan, por ej Spring4d



El codigo anterior quedaria similar a esto:

Código Delphi [-]
function Foo: TNullableBoolean;
begin
  Result := TNullableBoolean.Create(CalcSomething > 0);
end;


Los TNullable en spring, son implementados usando record, asi que si falla la creacion no tendriamos nunca un AV si mas adelante quiero consultar su valor

Obviamente, un verdadero nullable no permite acceder al valor en cuestion si nunca se seteo nada; en este caso spring4d, eleva una excepcion EInvalidOperation.

Lo interesante del asunto es que se dispone del metodo Value para recuperar el valor; y el metodo HasValue para ver si tengo un valor valido
Responder Con Cita