Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-01-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
Funciones de validación bien hechas

Siempre se dice que una función debe de hacer una única cosa, por ejemplo si vamos a validar que un dato introducido por el usuario sea un número decimal podemos hacer:

1)

Código Delphi [-]
function PrecioValido(Precio: string): boolean;
var
  Importe: extended;
begin
  Result := False;  
  if TryStrToFloat(Precio, Importe) then
    Result := True
  else
    ShowMessage('El precio no es válido');
end;

o podemos hacer:

2)

Código Delphi [-]
function PrecioValido(Precio: string): boolean;
var
  Importe: extended;
begin
  Result := False;
  if TryStrToFloat(Precio, Importe) then
    Result := True;
end;

y luego llamar al la función así:

Código Delphi [-]
if not PrecioValido(Precio) then
  ShowMessage('El precio no es válido');

¿Cuál de las dos formas sería la correcta?

Saludos.
Responder Con Cita
  #2  
Antiguo 28-01-2009
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Yo utilizaría la primera, puesto que la función lo único que va a hacer es validar, sino es válido el dato, no solo debe retornar el "falso" sino también dar el mensaje correspondiente.

Si llamamos a esa función desde 50 sitios de nuestro programa nos ahorramos 49 ShowMessage.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 28-01-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Y si en algun sitio no interesa que devuelva mensaje?
Por ejemplo, dentro de una clase realizando cálculos.

Otra opción podría ser esta:

Código Delphi [-]
function PrecioValido(Precio: string): boolean;
var
  Importe: extended;
begin
  Result := False;  
  if TryStrToFloat(Precio, Importe) then
    Result := True
  else
    raise EConvertError.Create('El precio no es válido');
end;



Si hacemos un proceso que calcula 200 (o 500 o 1000) precios y dentro se hacen conversiones (donde se valida), tal vez no interese que salten 39 mensajes si hay 39 errores, sino que al final se pueda decir: "30 precios no se han calculado correctamente" o similar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Lo bien hecho bien parece. marcoszorrilla Humor 2 13-03-2008 21:13:21
Porque no realiza bien el Cmmit o bien un ApplyUpdates(-1)? Luis Alberto Varios 6 14-12-2005 22:44:25
Contabilizar grabaciones hechas Novás Varios 7 15-06-2005 10:32:23
Modificar Tablas hechas en DBF Iris04 Conexión con bases de datos 1 09-06-2005 23:06:56
Listado de aplicaciones hechas con Delphi mamcx Noticias 4 08-03-2005 13:47:50


La franja horaria es GMT +2. Ahora son las 15:15:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi