Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #15  
Antiguo 07-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
No "ensucies" tus clases con ese tipo de validaciones estilo "Length > 30, error, el maximo es 30". Tus clases solamente hacen su trabajo, el cual es hacer negocios.

Es muy molesto tener que, en cada setter acordarse de poner el "aqui solamente aceptamos numeros enteros!". Y de pronto como decis, no es un modelo muy flexible para andar cambiando. Incluso si queres desactivarlo seria terminar comentando medio codigo fuente. No es la tecnica mas efectiva. Y eso es, porque como se comenta en el otro hilo que hablamos este tema, OO no es la solucion a todo. Simplemente hay cosas que se resuelven mejor usando otro paradigma.

De la misma manera que cuando empiezas a ver las estructuras de datos en los primeros años que estudias programacion, te enseñan primero los simples loops iterativos, luego te dan recursion, y te das cuenta de que algunos problemas son triviales de resolver usando una u otra tecnica (ejemplo clasico de los arboles, a quien se le ocurriria usar un for para recorrer un arbol binario??).

Aca hay un ejemplo de como hacerlo usando atributos: Using attributes in Delphi

Tambien hay otra forma que es muy interesante y por lejos la mas flexible de todas, es utilizando Aspect Oriented Programming (AOP). En este video se explica como hacerlo en Delphi. AOP te permitiria, en una unit separada tener toda tu logica de validacion de datos. Solamente tocando aca, tuneas todas las validaciones que se te antojen. Esto quiere decir que tu sistema en general "no se va a dar cuenta nunca" de que alguien esta monitoreando los valores permitidos y los que no. Esto es bueno porque simplemente sacas la unit, recompilas y tadá! Ahora los nombres pueden tener todos los caracteres que de la gana.

Tambien quiere decir que seria trivial serializar los parametros de configuracion de las validaciones hasta en un tonto fichero ini y con solo unos toques ahi ya podrias por ejemplo permitir, ahora 31 caracteres en el nombre de los clientes porque al jefe de turno le parece lo mas adecuado

AOP es una tecnica sumamente poderosa, y como se explica en el video, es muy bueno para implemtentar este tipo de cosas de forma horizontal en todo el sistema, pero a la vez "transparentemente"; notar tambien los otros casos que menciona que son buenos para atacar con AOP: el Loggin. Si uno quiere andar guardando registro de todo lo que pasa, es muy molesto el tener que andar acordandose de hacerlo en cada metodo. Ademas de que molesta, porque uno cuando esta programando cierto metodo quiere concentrarse solo en lo que hace el metodo, no de avisarle a la clase logger "hey mira, entre al metodo IncrementarExistenciaProudcto, son las 3 AM del dia Martes xx/xx/xxxx, el usuario que disparo la accion se llama juan, tiene nivel de acceso modo-dios, los parametros son: [...]"
Responder Con Cita
 



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
Class Helpers sobre Genericos.. yapt OOP 1 24-04-2011 16:06:17
Procedures Genericos con Parametros de Controles.... Kenobi Varios 23 21-11-2007 00:42:41
Listbox con items genericos ANG4L Varios 2 11-05-2006 03:54:37
Parametros sql genericos AbcXxx Conexión con bases de datos 2 10-11-2005 00:31:59
... 100 tipos... Jure Humor 0 18-03-2004 14:24:30


La franja horaria es GMT +2. Ahora son las 08:05:11.


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