@ agnasg

agnasg


¿Quieres perder el tiempo? Optimiza antes de tiempo

25-01-2016 7:14 AM

¿Quieres perder el tiempo?  Porque así se pierde el tiempo. Algunos programadores (yo incluído) tenemos la tendencia a hacer sutiles cambios al código, bien por optimización o por elegancia.

psyblast utiliza irrlicht, que como todo motor/framework viene con su propia libreria que intenta sustituir a la Standard template library. Qt también hace lo mismo con resultados mixtos. psyblast tiene soporte multilenguaje por lo que los textos son utf8. Desde hace años yo hago lo siguiente para pasar de iso-8859-1 (o latin 1 o lo que sea) a utf8:

std::string stext="Un string soñado con un hálito de común sin sentido amén de sin razón"
wchar_t wtmpbuf[2048];
mbstowcs (wtmpbuf, stext.c_str(), 2048);

se me ocurrió optimizarlo a:

wchar_t wp = stringw(stext.c_str()).c_str());

donde stringw es un typedef a core::irr::string. Profundo en los cambios que estuve haciéndo en el engine quedó ese cambio, inocente y sin ser testeado suficientemente. El viernes descubrí que los paneles de conversación no estaban desplegando los acentos y las ñ’s. Luego de revisar el font, SQLite, todas las funciones involucradas, finalmente como un acto desesperado se me ocurrió que quizás stringw () tenía algo que ver… 4 horas después. ¿Quieres perder el tiempo?  Porque así se pierde el tiempo. La ingeniería de software tiene toda una serie de reglas para evitar que esto pase… famosas últimas reglas.