Ver Mensaje Individual
  #11  
Antiguo 18-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
Te voy a comentar una chapuza (con la esperanza de que alguien me de soluciones... ¿por qué no? ) para evitar los moldeos de tipos.

Desde luego el código se hace más legible y es muy muy fácil hacerlo.

En Tcuentascontables defines una función:
Código Delphi [-]

TCuentasContables = class(TObject)
public
 function AsCuentaContable:TCuentasContables;
end;

function AsCuentasContable:TCuentasContables;
begin
  result := TCuentasContables(self);
end;

De forma que tu linea:
Código Delphi [-]
TCuentasContables (tvArbol.Items [N].Data ).DevuelveSaldoCuenta
quedaría como :
Código Delphi [-]
tvArbol.Items[N].Data.AsCuentaContables.DevuelveSaldoCuenta

Este truquito lo he usado en una sóla ocasión, y la verdad el código se aclaró bastante en legibilidad. No sé si hay otra solución, espero que sí .

En mi caso, tanto Talbaran, TFactura y TCliente heredaban de TBaseObject y en TBaseObject creé esas 3 funciones asAlbaran, AsFactura, AsCliente. Por supuesto en la aplicación siempre usaba TBaseObject para crear los objetos:
Código Delphi [-]
var
  nuevo :TBaseObject;
begin
   nuevo := TAlbaran.Create(...);
end;
A partir de ahora, uso nuevo.asAlbaran y elimino todos los moldeos de tipos que usaba en la aplicación final.

Por supuesto debes saber lo que haces, porque si tienes un Talbaran y pides asCliente tendrás errores de ejecución (probablemente...).

Como ves, realmente el moldeo de tipos no hay quien lo quite, está presente en las funciones, pero en la aplicación final no tienes ninguno.

Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 18-12-2008 a las 11:02:47.
Responder Con Cita