Re: ejemplo del sistema de objetos de glib



On Mon, 2007-05-07 at 17:35 -0400, Claudio Saavedra wrote:
> On Fri, 2007-05-04 at 10:28 -0400, Alejandro Valdes Jimenez wrote:
> > Adjunto un ejemplo que hice de gobject para que alguien si tiene un
> > tiempecito le de una miradita... quiero saber si est�ien
> > implementado
> > y si es un buen ejemplo.
> 
> Le ech�na mirada r�da, no soy experto en GObject, pero tengo algunos
> comentarios, ojal�e sean �s:
> [lista de comentarios �s]

Yo agregar�lo siguiente:

- Aprender y acostumbrarse a usar g_assert, g_return_if_fail y afines.

Si PersonaMainApp ser�arte de una biblioteca independiente, que puede
ser utilizada por otras aplicaciones, entonces usar g_return_if_fail o
g_return_val_if_fail.

Si es parte de la misma aplicaci�entonces usar g_assert.

La idea es verificar los par�tros punteros que recibe cada
funci��do; antes de realizar cualquier operaci� Esto es
para atrapar los errores tan pronto como sucedan.

As�por ejemplo, est�efinida:

void
persona_main_app_agregar_persona (PersonaMainApp *obj, gchar *nombre,
gint edad)
{
        obj->nombre = g_string_new (nombre);
        obj->edad = edad;
}

�Qu�ucede si obj es nulo? �O no corresponde al tipo? Lo mismo
con nombre.

Lo correcto ser�

void
persona_main_app_agregar_persona (PersonaMainApp *obj, gchar *nombre,
gint edad)
{
        g_assert (PERSONA_IS_MAIN_APP (obj));
        g_assert (nombre != NULL);

        obj->nombre = g_string_new (nombre);
        obj->edad = edad;
}

Algo similar ocurre en otras funciones.

-- 
Germ�Po�ama�oncepci� Chile




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]