FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Cita:
Es decir valida que solo libera cuando esta creado. Es codigo seguro. Lo que tu colocas da problemas porque sigues liberando un objeto que pretendes devolver. Saludos. |
#2
|
||||
|
||||
¡Hola!
Cita:
Como ya se dijo, es normal utilizar FreeAndNil con variables globales, y aunque también puede ser aplicado a variables locales, por lo general sólo utilizamos Free con éstas. En otras palabras, el uso de FreeAndNil se justifica cuando existe la posibilidad de que alguna parte del código intente hacer algo con la instancia de objeto apuntada por la variable después de haberse destruido dicha instancia. Por otro lado, la solución propuesta por Linett al principio me parece la más adecuada. Cuando mucho haría falta una llamada al método Clear antes del primer Add. Un abrazo sin destruir. Al González. Última edición por Al González fecha: 12-11-2008 a las 17:51:17. |
#3
|
||||
|
||||
Cita:
Esto segun Allen Bauer es un vicio horrendo de programación . Ahora si mirás el código delhi de FreeAndNil:
Si obj = nil estas llamando a nil.free!!!! No jodamos, es inaceptable o muy arriesgado para mis pareceres. Aunque se enoje Allen Bauer , escucho argumentos en contra que me quiten el vicio. Saludos |
#4
|
||||
|
||||
Cita:
Justo por eso (y sólo por eso) es que siempre se recomienda usar Free en lugar de Destroy. // Saludos |
#5
|
||||
|
||||
Cita:
Código Delphi [-]procedure TObject.Free; begin if Self <> nil then Destroy; end; Justo por eso (y sólo por eso) es que siempre se recomienda usar Free en lugar de Destroy. // Saludos[/quote] Y te parece segura una llamada como Nil.free ???? Este tema incluso esta referenciado en el blog de Allen Bauer, no todos estan convencidos de una u otra manera. Para mi entre código raro y código seguro : siempre seguro. Eso me permite que un servidor corra 24 horas sin un solo problema. Saludos. |
#6
|
||||
|
||||
En Delphi es de lo más seguro, Donald.
Cuando el objeto es Nil y el método Free hace esta validación: , está preguntando si Nil es diferente de Nil, en cuyo caso llama a Destroy. De lo contrario no hace absolutamente nada. Si Free fuese un método virtual o hiciera alguna otra cosa con la "improbable" instancia, entonces sí sería inadecuado usarlo en esos casos. Self es un parámetro implícito que llevan todos los métodos y equivale al puntero en sí de la instancia en cuestión. Nil, cuando el puntero está en blanco. No hay absolutamente ningún problema. ¿Ya convencido? |
#7
|
||||
|
||||
Tal como dice Al. Es completamente seguro usar Free en nil. Ese es el objetivo de Free, que sea seguro usarlo. Y lo es porque nunca hay una llamada a nil.Destroy.
// Saludos |
#8
|
||||
|
||||
Cita:
Estas explicándome que hace el código y que es self . Lo que quiero saber es porque razón un puntero a la nada (nil) es seguro. Saludos. |
#9
|
||||
|
||||
Cita:
Una disculpa a elcigarra por las derivaciones que tuvo el hilo (al menos por lo que a mí me toca). Saludos. Al González. |
#10
|
||||
|
||||
Cita:
Si han sido suficientes para erradicar el vicio? Primera regla del programador es no toques código que funciona sin una buena razón. No veo una buena razón en revisar código viejo. Para el código nuevo probaré, te cuento cuando tenga mis propias pruebas de uso. Saludos. |
#11
|
||||
|
||||
Urbana respuesta, gracias. Y una disculpa si te hice sentir presionado, no era esa la intención. Cuando gustes te invito un trago en La Taberna.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Buenas prácticas de programación | elcigarra | OOP | 18 | 07-11-2008 17:05:27 |
Siete prácticas para un óptimo y rápido desarrollo de software | poliburro | Noticias | 5 | 30-07-2008 16:48:55 |
buenas maneras... | BlueSteel | Humor | 23 | 13-06-2008 08:11:21 |
Buenas Noticias | faustoffp | Noticias | 0 | 04-09-2006 06:33:06 |
Ayuda Practicas En Delphi | MARIAM23 | Varios | 1 | 22-07-2006 01:19:34 |
|