[Buoh-dev] Fechas de publicación

Carlos Garcia Campos carlosgc at gnome.org
Thu Sep 29 03:54:06 MDT 2005


El jue, 29-09-2005 a las 00:50 +0200, Esteban Sánchez escribió:
> El mié, 28-09-2005 a las 19:56 +0200, Carlos Garcia Campos escribió:
> > El mié, 28-09-2005 a las 18:50 +0200, Esteban Sánchez escribió:
> > > Acabo de añadir una propiedad más al dialogo de propiedades, en el
> > > caso
> > > de que sea un comic-manager-date se muestra los días de la semana en
> > > los
> > > que se publica. Para ello he creado un método get_publication_days en
> > > la
> > > clase BuohComicManagerDate que devuelve una cadena "human-readable".
> > > No
> > > sé si es la solución más OO, pero lo he hecho así por dos razones:
> > > 
> > > 1- El que lo use no tiene porqué saber como lo almacena interiormente
> > > 2- Desde fuera nunca se va a usar las "restricciones".
> > 
> > está perfecto, lo que no interesa de cara al exterior son los dias que
> > sale publicado
> 
> No sé si te habrás liado, pero es justo al contrario :) Bueno, que da
> igual :P

no no, si es un typo, jeje, donde pone "no" quise decir "nos"

> > > +static const gchar *
> > > +get_dayweek (GDateWeekday d)
> > 
> > ponle el prefijo, aunque sea un función auxiliar y privada, por convenio
> > con el resto del código. Añade también un prototipo al principio del
> > fichero.
> > 
> > > +{
> > > +       switch (d) {
> > > +       case G_DATE_MONDAY:
> > > +               return (_("Monday"));
> > > +       
> > > +       case G_DATE_TUESDAY:
> > > +               return (_("Tuesday"));
> > > +       
> > > +       case G_DATE_WEDNESDAY:
> > > +               return (_("Wednesday"));
> > > +       
> > > +       case G_DATE_THURSDAY:
> > > +               return (_("Thursday"));
> > > +       
> > > +       case G_DATE_FRIDAY:
> > > +               return (_("Friday"));
> > > +       
> > > +       case G_DATE_SATURDAY:
> > > +               return (_("Saturday"));
> > > +       
> > > +       case G_DATE_SUNDAY:
> > > +               return (_("Sunday"));
> > 
> > yo para esto propondría algo como:
> > 
> > static const gchar *day_names [] {
> > 	NULL,
> > 	N_("Monday"),
> > 	.......
> > };
> 
> No se me habría ocurrido, además empecé haciendolo con un switch, y
> luego vi que era mejor una función, así que copié y pegué
> 
> > y simplemente devolver g_strdup (day_names[d]);
> > 
> > compruebas antes que el índice no se vaya de rango y listo
> 
> Si se sale de rango ¿no petaría antes en ejecución al pasarle algo fuera
> del enumerado GDateWeekDay? Pero claro, una comprobación de más nunca
> viene mal
> 
> > > +       
> > > +       case G_DATE_BAD_WEEKDAY:
> > > +       default:
> > > +               return ("Bad weekday");
> > 
> > realmente nos interesa devolver esto? No tiene ninguna utilidad, además
> > que no lo estas manejando, así que en caso de devolver esto, llegará al
> > gui una cadena sin traducir que no pinta mucho. Creo que sería mejor
> > devolver NULL y controlarlo después, para en caso de recibir NULL,
> > simplemente ignorarlo. 
> 
> Idem a la anterior respuesta, no llegaría ahí (vale, no puedo asegurar quien usa 
> la función, así que lo cambio), pero mi razonamiento fue ese.

si nunca llega mas razón para devolver NULL. En cualquier caso, si no
hay problemas de rango no lo compruebes y listo.

> > > +       }
> > > +}
> > > +
> > > +gchar *
> > > +buoh_comic_manager_date_get_publications_days (BuohComicManagerDate
> > > *comic_manager)
> > 
> > hmm no sería publication_days? (dias de publicación no de publicaciones,
> > no?)
> 
> Sí, me lié un poco con el idioma :P
> 
> > > +               if (!comic_manager->priv->restrictions[i]) {
> > 
> > nunca he entendido esto de las restricciones. Si son los dias de
> > publicación, por que no se llama simplemente publication_days y tiene
> > una lógica directa en vez de indirecta? Vamos que cada vez que veo esto
> > de las restricciones me tengo que acordar que corresponde a los dias de
> > pucblicación, pero teniendo en cuenta que FALSE significa que si se
> > publica ese dia. 
> 
> Bueno, en principio se da por hecho que los comics salen todos los días,
> así que los que no son así tienen restricciones. Esto parece lógico,
> pero quizás al implementarlo seguí la misma lógica (sin hacerla
> positiva) y salió el lío este :) Si me animo lo cambio porque
> evidentemente es más ofuscado, pero como lo hice yo pues no cai en la
> cuenta.

ok, si en el XML es mas cómodo así, se le puede dar la vuelta a la
lógica al crear el objeto a partir del XML y dejar el XML tal y como
está

> > > +                       if (prev == 0) {
> > 
> > si es booleana, == 0 te obliga a pensar, 0 era verdadero o falso? usa
> > mejor TRUE o FALSE o simplemente !

yo tb

> Esto fue un desliz producto de reescribir el algoritmo (antes era un
> gint). Prefiero no usar ni TRUE ni FALSE, si no directamente prev.
> 
> > > +                               if (aux->len) {
> > 
> > es necesario comprobar siempre esto antes de un append? en este punto
> > nos hemos metido ya en un 4 nivel   for { if { if { if { Esto es una
> > locura, si hay manera de mejorarlo bien sino pues na.
> 
> Es la única manera que he visto de hacerlo sin repetir código. Si lo
> prefieres lo pongo así (no se me ocurren más ahora a bote pronto):
> 
> if (prev && aux->len) {
> 	g_string_append (aux, ", ");
> 	g_string_append (aux, get_dayweek (i));
> 	last_printed = i;
> } else if (prev) {
> 	g_string_append (aux, get_dayweek (i));
> 	last_printed = i;
> }

La verdad es que a mi tampoco se me ocurre como hacerlo, así que de
momento así evitamos un nivel.

> > Salu2
> 
> Mañana mando el parche con más calma.

guay!!

> Saludos!

Salu2
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 Carlos Garcia Campos a.k.a. KaL
   elkalmail at yahoo.es
   carlosgc at gnome.org
   http://carlosgc.linups.org
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=             
PGP key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x523E6462
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada
	digitalmente
Url : http://forge.novell.com/pipermail/buoh-dev/attachments/20050929/fc17122b/attachment.pgp


More information about the Buoh-dev mailing list