
Hola Jordi,
Bon dia,
Després de l'ultim e-mail he aparcat la feina que feia i aquest matí li he dedicat 15 minuts a fer una versió per la classe LogFile. A veure que us semblen les coses que hi he afegit. Se li podrien donar noves funcionalitats per a evitar de declarar-lo com a g_log i definir-lo coma a 'Singleton', però això no sé si t'interessa.
Sí, això és una cosa que caldria mirar.
He definit una nova funció WriteLog amb el mateix format del printf() per si vols simplificar el procés de generació de registres.
Les funcions segures de Microsoft (acabades en '_s') no son de la API de Windows i no són compilables amb altres compiladors. Veig que s'han utilitzat les versions definides amb template<size_t>. Si les vols eliminar i que no aparegui el warning corresponent suposo que ja saps que només caldrà definir #define _CRT_SECURE_NO_WARNINGS en el stdafx.h.
Idealment: - Quan fas un git diff des de línia de comandes hauria d'ensenyar pocs canvis així es pot tenir una traceabilitat del que s'ha canviat. Amb el munt de canvis que hi ha és difícil entendre que s'ha canviat i perquè. - El procés per fer canvis de refactoring hauria de ser: * Escriure una prova unitària tal com està ara * Fer els canvis * Assegurar-nos que la prova unitària funciona i no em introduir regressions. Per exemple, estic a punt de fer canvis significatius a l'acció de Windows 8 per afegir suport pel valencià, i el primer que he fet és afegir-hi les proves unitàries: https://github.com/Softcatala/CatalanitzadorPerAWindows/commit/fdc962c268f0b... Que encara he d'ampliar. Així quan faci canvis, tindré més seguretat si he trencat algun funcionament previ (introduït regressions). Coses respecte l'estil: - Els canvis de noms de variables com ara de 'm_szFilename' a 'm_szFilename__' són inconsistents amb el sistema de noms de variables que usa el Catalanitzador. - Hi ha comentaris en castellà '// Creamos la linea con los parametros que nos pasan'. L'estàndard de documentació del Catalanitzador és en anglès. - Canviar les trucades de l'API de 'GetTempPath' a '::GetTempPath' no aporta cap valor sinó és que hi ha una coincidència amb un membre de classe, que no és el cas. - Jo no introduiria els namespaces (namespace catfiles). Ho ho fem a totarreu a una classes només no té sentit. - Al mètode _writeCompileTime has afegit la possibilitat de que funcioni amb appName == 0 ([OOOPS]) però l'únic lloc d'on es truca només es truca si 'if ( logFileName != 0 && appName != 0 )' per la qualcosa aquest camí de codi no s'executa mai. - El catalanitzador segueix l'estil 'variable == valor' en comptes de 'valor==variable', com vam comentar. Per exemple, assert(0 != logFileName). - Al codi es barrejen asserts de l'estil _ASSERT i assert que són diferents implementacions. Al Catalanizador usem _assert. - Canvis per suport per altres compiladors per a mi cauen dintre del que s'anomena YAGNI[2]. És a dir, canvis per un requeriment futur que no sabem si tenim. Llavors, no en faria cap si realment no és part d'un esforç complet de portar el Catalanitzador a un altre compilador, quelcom que per mi té molt baixa prioritat. - Quan fas 'if ( m_hLog__ != INVALID_HANDLE_VALUE)' i després un bloc de codi és molt habitual retornar immediatament per evitar tenir el codi identat tan a dins, és a dir, comproves la condició i retornes, i el condi continua després sense necessitat d'estar a un bloc. Al final, m'agradaria que els canvis que fossin necessaris. Jordi, et proposo: 1) Quedem un dia després de la feina, i fem aquests canvis conjuntament perquè penso que per correu electrònic això es farà etern. 2) Creem una guia d'estil que reflexi quin l'estil de codificació actual, i quines coses cal canviar. 3) Documentem i prioritzem tots els refactorings que cal fer. Tinc una llista llarga també. Com ho veus? Atentament, Jordi, [1] https://github.com/Softcatala/CatalanitzadorPerAWindows/blob/master/Catalani... [2] http://en.wikipedia.org/wiki/You_ain%27t_gonna_need_it -- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org