Namespaces y carpetas
Posted by and2arana on 2008-10-23 00:40
Propongo que usemos un namespace global a cada proyecto, y que ubiquemos los archivos en una estructura de carpetas que refleje estos namespaces. Por ejemplo, en el proyecto de common, todas las clases deberían estar en un namespace "common". Además, las clases relativas a threading deberían estar en el namespace common::thread, y físicamente los archivos deberían estar en tam/src/common/thread/*. Como ventaja tiene que es más organizado, tenemos menos problemas de name clashes y respetamos el estándar.
Otro tema, habíamos hablado del tema de los include guards. Eclipse te genera unos por default, pero tienen problemas cuando tenés dos .h con el mismo nombre en dos proyectos / carpetas distintas. Propongo que el formato del include guard sea algo como:
#define __[RUTA_COMPLETA_AL_ARCHIVO]_[NOMBRE_DE_ARCHIVO]_H_INCLUDED__
Por ejemplo, el include guard que está en el .h de la clase common::socket::TcpSocket debería ser:
#define __COMMON_SOCKET_TCPSOCKET_H_INCLUDED__
Es medio parto escrir todo eso... pero nos da más seguridad de que no estemos pisando las macros de otros .hs.
Bueno, comenten, y si tengo su aprobación cambio common para que ya vaya implementando estas prácticas.
Otro tema, habíamos hablado del tema de los include guards. Eclipse te genera unos por default, pero tienen problemas cuando tenés dos .h con el mismo nombre en dos proyectos / carpetas distintas. Propongo que el formato del include guard sea algo como:
#define __[RUTA_COMPLETA_AL_ARCHIVO]_[NOMBRE_DE_ARCHIVO]_H_INCLUDED__
Por ejemplo, el include guard que está en el .h de la clase common::socket::TcpSocket debería ser:
#define __COMMON_SOCKET_TCPSOCKET_H_INCLUDED__
Es medio parto escrir todo eso... pero nos da más seguridad de que no estemos pisando las macros de otros .hs.
Bueno, comenten, y si tengo su aprobación cambio common para que ya vaya implementando estas prácticas.
Home / Developer API / Tour / Get a Project - Solutions for Bug & Issue Tracking, Collaboration Tools, Subversion Hosting, Git Hosting
Taller i is powered by Assembla.
3 Comments
By graineri on 2008-10-23 05:12
By graineri on 2008-10-23 05:36
By graineri on 2008-10-23 06:01
Quedó:
Para la clase:
common::threads:Thread
#define COMMON_THREADS_THREAD_H_
Cualquier cosa, puteen.
Eclipse 3.2 viene con un C Development Toolkit (CDT) que no permite cambiar los templates... :(
El CDT 5.0 ya los permite cambiar. Habría que ver si lo podemos actualizar.