Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-08-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile ¿Cómo le llamarían a nueva propiedad de TDataSource?

¡Hola a todos!

Hace tiempo vengo creando algunos componentes de acceso a datos derivados de varios nativos de Delphi 7. Ya hice algunos derivados de dbExpress, TDataSetProvider, TClientDataSet y TDataSource, y últimamente he estado implementando clonaciones de objetos (crear un componente de la misma clase que otro, copiando los valores de sus propiedades publicadas).

Bien, resulta que estoy por agregar una nueva propiedad de tipo Boolean en la clase "TMiDataSource" (hija de TDataSource), cuyo propósito será indicarle a la fuente de datos si en tiempo de ejecución deberá usar el conjunto de datos asignado en tiempo de diseño en su propiedad DataSet, o si deberá crear un "clon" de ese conjunto de datos, adueñarse de él y usarlo en sustitución del conjunto de datos original.

La idea surge ante el deseo de evitar definir en tiempo de diseño dos conjuntos de datos muy similares con casi los mismos valores de propiedades, eventos y campos persistentes, y donde la única diferencia es que uno se utilizará sin filtro y el otro con filtro (para relación maestro-detalle u otros propósitos), pero siendo ambos usos simultáneos por tener abiertas dos formas que acceden respectivamente a cada uno.

Coloco el conjunto de datos en un módulo de datos y un "TMiDataSource" en cada forma. En uno de éstos dejaré la nueva propiedad con un valor de False y en el otro la pondré con un valor de True. La idea es que al cargarse la segunda forma y la conocida propiedad DataSet del componente, éste verifique que su propiedad X (la nueva propiedad) es True y ante ello clone el objeto al que apunta la propiedad DataSet y sustituya el valor de ésta. Siendo el nuevo DataSet un objeto adueñado por el componente, de tal manera que sea destruido cuando la fuente de datos se libere al cerrar la forma.

¿Cómo debe llamarse la nueva propiedad?

He pensado que podría ser CloneDataSet, UseClone o UseCloneDataSet pero me gustaría escuchar sus sugerencias y de paso perfeccionar la idea con sus opiniones respecto a esta idea.

Muchas gracias.

Un abrazo clonado.

Al González.
Responder Con Cita
  #2  
Antiguo 06-08-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Espero no decir una tontera...

Hola Al,

Se que soy medio novato con respecto al tema de BD+Delphi. Es un mundo que lo voy aprendiendo a medida que necesito continuar con mis trabajos.

Bueno, es por mi novatada que no termino de comprender la utilidad y potencialidad de tus cambios y extensiones. De lo que pude entender, y a mi parecer... el nombre adecuado es UseCloneDataSet. A mi modo de ver, representa más la acción (verbo) del propósito. CloneDateSet, me suena a un segundo DataSet... por lo que estaría dando a conocer que se espera un DataSet. Y por último: UseClone, a pesar de que está manifestando una acción... no termina "diciendo" de QUE.

Como dije,... es una opinión muy novata. Pero yo, con lo poco que sé, intuiría que UseCloneDataSet es lo que esperaría.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 06-08-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola Marcelo!

Al contrario, tus opiniones por lo general me parecen muy interesantes. Tuve la misma reflexión que tú respecto a los posibles nombres, pero todavía no decido cuál será el nombre definitivo.

La idea central de estas mejoras va con el propósito más común de toda biblioteca de programación: ahorrarles trabajo a los programadores operativos (los "usuarios" de los componentes); evitando duplicar código o diseño, algo más que aconsejable en todo desarrollo de software.

Un abrazo extendido.

Al González.
Responder Con Cita
  #4  
Antiguo 06-08-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Si es como dices, y como yo me lo estaba imaginando: el desarrollo no es para uno, sino para otros... no hay que dudar mucho, creo haber entendido ya la idea de UseCloneDataSet (o por lo menos un poco mejor). Me has dejado pensando en ello.

Bueno, como ya dije lo bueno que le veo al nombre. Creo que sería válido indicar que puntos en contra se pueden apreciar:
1. UseCloneDataSet es un nombre relativamente largo. Es un poco molesto... por lo general agradan más las propiedades, eventos, etc... con nombres cortos ya que son más fácil de memorizar. Acortandole el nombre se pierde el significado y posiblemente nieble u oscurezca entenderlo. Un buen ejemplo que de ello es Crtl ¡Ni una sola vocal!
2. ¿Cual es el valor por defecto? Una cosa que no me gusta de los boolean es su valor por defecto. Por lo general uno espera por la afirmación (es decir TRUE), pero el valor por defecto es FALSE (¿o me equivoco?). Si bien se puede setear el valor por default en Create(). A lo que voy es que, a fin de darle comodidad al usuario debe tener el valor por defecto (y por ende: el más usado o "esperado"). Y todos sabemos que el nombre debe obedecer o seguir la regla del valor por defecto.

A esto, se me ocurre otro nombre. Como alternativa, puedes considerar: CloningDataSet. Si bien no es la "acción" correcta, creo que sigue interpretando el significado de un boolean y hace al propósito de la propiedad.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 06-08-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola!

Recordando que Borland acostumbra utilizar el participio de los verbos (con terminación ed) como sufijos para ciertos identificadores de tipo Boolean, busqué la cadena "ty [a-z]+ed: Boolean .* Default" en todos los fuentes de Delphi (C:\Archivos de programa\Borland\Delphi7\Source) empleando la útil opción Find in Files.

Encontré varios ejemplos de actuales propiedades Boolean formadas por un sustantivo seguido por un verbo en participio, entre ellas la propiedad HandleShared de TDatabase. Creo entonces que no estaría mal llamarle DataSetCloned a la nueva propiedad en cuestión. Salvo alguna sugerencia adicional que ustedes tengan.

Ahora lo que me tiene pensando es cuál debe ser el comportamiento de la propiedad al cambiar su valor en tiempo de ejecución. ¿Debe haber una reacción automática, o simplemente se activa / desactiva como bandera para la siguiente asignación a la propiedad DataSet?

Un abrazo sin bandera.

Al González.

Última edición por Al González fecha: 06-08-2007 a las 21:38:44. Razón: Corrección sobre tiempos verbales (pasado - participio)
Responder Con Cita
  #6  
Antiguo 06-08-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Más que pasado es el participio:

HandleShared - Manejador compartido

// Saludos
Responder Con Cita
  #7  
Antiguo 06-08-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola de nuevo!

Cita:
Empezado por roman Ver Mensaje
Más que pasado es el participio:

HandleShared - Manejador compartido

// Saludos
¡Caramba! Tienes toda la razón Román. Por un momento fusioné las dos formas verbales en una sola, gracias por la oportuna corrección.

Un abrazo compartido.

Al González.
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
TDataSet,TDataSource,TclientDataSet teote Conexión con bases de datos 1 17-07-2008 16:52:31
Implementar una nueva opción para la propiedad "FormStyle" JM75 OOP 3 15-02-2007 15:53:44
Como enlazar el TDataSource a un TpFIBQuery ???? AGAG4 Conexión con bases de datos 3 21-10-2006 00:44:20
Como forzar página nueva con TQRCompositeReport jorge82 Impresión 1 28-04-2006 23:42:22
TDataSource - ¿Para qué existe? roman Debates 6 14-07-2004 19:31:44


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


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