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-03-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
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
Sugerencias para nombre de método de clase, ¿tú qué nombre le darías?

Ejemplo algo "abstracto":
Código Delphi [-]
  // Esquema normal, usar If:

  If { Cierta verificación de Param } Then
    // Param superó la verificación, creamos la instancia de objeto.
    Obj := TObj.Create (Param)
  Else
    Obj := Nil;  // Param no superó la verificación, asignamos Nil.


  // Esquema alternativo, usar un método de clase:

  { El método de clase "Make" hace la verificación de Param, llamando al
    constructor Create si la supera, o devolviendo Nil si no la supera. }
  Obj := TObj.Make (Param);
En ocasiones la verificación de "Param" es tan intrínseca de la clase (en este caso "TObj"), que pareciera más adecuado (y orientado a objetos) definir en ella un método de clase que haga todo el trabajo: verificar el parámetro y crear el objeto o devolver Nil.

¿Creen que "Make" puede ser un buen nombre estandarizado para ese tipo de métodos?

¿Se les ocurre algún otro que suene más a la tarea realizada? ¿Cuál?

¿Estoy borracho de sueño y debí dormir algunas horas antes de publicar disparates?

Bueno, saludos y gracias de antemano. Esta mañana, será otro día...
Responder Con Cita
  #2  
Antiguo 06-03-2013
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿MakeOrDie? En todo caso trataría (creo) de dejar claro que trata de crear un objeto, pero, que, es posible que no se termine creando. Así que "MakeOrDie", "MakeIfPossible", "MakeFromParams",... "CreateFromParams"... ¡Lo siento! ¡no soy muy bueno poniendo nombre a nada!
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 06-03-2013 a las 09:52:22.
Responder Con Cita
  #3  
Antiguo 06-03-2013
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.286
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
Yo voto por la tercera opción...

No, no la de "MakeFromParams", sino la de que "te vayas a dirmir un rato...."

Si aun sigues con eso cuando te levantes, tal vez un "TryCreate",...

Código Delphi [-]
  Obj := TObj.TryCreate(Param);
__________________
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
  #4  
Antiguo 06-03-2013
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

+1 al "TryCreate", aunque, todo esto me deja una rara sensación, como que no entiendo muy bien que uno espere "nil" de esta forma... entonces habría de comprobarse después si el objeto ha sido o no creado. Ahora bien, ¿qué tal el uso de excepciones? Se le pasan los parámetros a cierto método, y, este levanta determinada excepción si los parámetros no son válidos y el objeto no puede ser creado. ¿Qué os parece?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 06-03-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 21
ozsWizzard Va por buen camino
Yo tiro por la tangente.

Yo, a veces, tengo dos métodos de clase, dos procedimiento llamados "Instanciar" y "Liberar", en ellos hago lo siguiente:
Código Delphi [-]
class procedure TObj.Instanciar(var Param: TParam; var pObj; TObj);
begin
    Liberar(pObj);

    pObj := TObj.Create(Param);
end;

class function TObj.Liberar(var pObj: TObj);
begin
   if Assigned(pObj) then
      FreeAndNil(pObj);
end;
A esta forma de trabajar, para que se parezca a la tuya bastaría con cambiar el "Instanciar" y realizar lo siguiente

Código Delphi [-]
class procedure TObj.Instanciarr(var Param: TParam; var pObj; TObj);
begin
    Liberar(pObj);

    if TObj.ValidarParam(Param) then //Siendo ValidarParam una función de clase de tipo booleana
          pObj := TObj.Create(Param);
end;

Se me olvidaba la llamada:
Código Delphi [-]
begin
   TObj.Instanciar(Param, Obj);
end;

La opción "TryCreate" no me parece mal tampoco.
__________________
La Madurez se llama...
~~~Gaia~~~

Última edición por ozsWizzard fecha: 06-03-2013 a las 15:55:47.
Responder Con Cita
  #6  
Antiguo 06-03-2013
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.286
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
No quería entrar en el comportamiento, pero a mi también me parece algo extraño el que al llamar a un Create, el constructor no cree nada y devuelva un nil. Además sin dar ningún otro "síntoma".

Es decir, si igualmente después del Create se tiene que preguntar si se ha creado algo, veo más natural lo que comenta David. Si hay algún problema levanto excepción y listo. Si hay que acabar preguntando (o haciendo algo), me "suena" más natural el tema de la excepción.

Si al crear hay algún problema, parece lógico avisare de ello.
__________________
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
  #7  
Antiguo 06-03-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 21
ozsWizzard Va por buen camino
Bueno, yo no he querido entrar tampoco en ese tema y mucho menos en si es necesario o no avisar de que ha habido un problema, se me ocurren ejemplo prácticos del porqué.

Vamos a verlo de la siguiente forma:
  1. Tengo un objeto con varios objetos dependientes
  2. En el Destroy de ese objeto contenedor tengo el siguiente código
    Código Delphi [-]
     
    destructor TContenedor.Destroy;
    begin
       for i := 0 to ListaObjetos.Count - 1 do
       begin
          if Assigned(ListaObjetos[i]) then ListaObjetos[i].Free;
       end;
    end;
  3. cada objeto contenido tiene una misión en base a si se crea o no; ejemplo: muestra un edit si se crea o no lo muestra en caso contrario

En definitiva, si te pones a buscar caso prácticos, seguro que alguno se encuentra.
__________________
La Madurez se llama...
~~~Gaia~~~
Responder Con Cita
  #8  
Antiguo 06-03-2013
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola

Según la lógica yo lo nombraría

Código Delphi [-]
Obj := TObj.TryOrNil (Param);

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
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
Encontrar objeto por su nombre, encontrar metodo, ejecutar metodo coso Trucos 7 02-09-2011 00:23:13
Cambiar el nombre de la clase. rauros Varios 2 02-08-2008 20:56:44
Crear formularios a partir de su nombre de clase kes .NET 6 21-02-2008 08:06:07
Crear Objeto por su nombre de clase jlrbotella OOP 2 08-01-2008 23:44:37
nombre de variables de una clase Mariana OOP 8 25-10-2005 17:48:34


La franja horaria es GMT +2. Ahora son las 21:43:59.


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