[Desenvolupament] Llibreria libcatz
Jordi Mas
jmas a softcatala.org
dim oct 9 07:19:40 CEST 2012
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/fdc962c268f0b1966eb7dd8811cbc805ce4e5233
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/CatalanitzadorPerAWindows/Core/Configuration/ConfigurationInstance.h
[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
Més informació sobre la llista de correu Desenvolupament