Difference between revisions of "Buenas prácticas"
Jump to navigation
Jump to search
Jgvictores (talk | contribs) |
Jgvictores (talk | contribs) |
||
Line 3: | Line 3: | ||
** Redacción de publicaciones: Consultar para la URL exacta, distribuidos a través de http://robots.uc3m.es/svn/* (SVN, privado) | ** Redacción de publicaciones: Consultar para la URL exacta, distribuidos a través de http://robots.uc3m.es/svn/* (SVN, privado) | ||
== Programación == | == Programación == | ||
− | * [http://asrob.uc3m.es/index.php/Tutorial_CMake CMake] para cualquier proyecto C/C++. | + | * Para crear un nuevo proyecto C/C++, utiliza [https://github.com/roboticslab-uc3m/project-generator project-generator]. |
+ | * Si hay problema con project-generator, [https://github.com/roboticslab-uc3m/project-generator/issues coméntalo en la sección de issues]. Si sigues con motivos en contra, por lo menos no dejes de utilizar [http://asrob.uc3m.es/index.php/Tutorial_CMake CMake] para cualquier proyecto C/C++. | ||
* Utiliza UpperCamelCase para nombres de librerías y de clases. | * Utiliza UpperCamelCase para nombres de librerías y de clases. | ||
* Utiliza lowerCamelCase para nombres de ejecutables. | * Utiliza lowerCamelCase para nombres de ejecutables. |
Revision as of 12:47, 21 May 2016
- Siempre, para cualquier archivo de trabajo, por muy insignificante o borrador que parezca, utiliza uno de los repositorios compartidos:
- Software y hardware: GitHub (GIT, público)
- Redacción de publicaciones: Consultar para la URL exacta, distribuidos a través de http://robots.uc3m.es/svn/* (SVN, privado)
Programación
- Para crear un nuevo proyecto C/C++, utiliza project-generator.
- Si hay problema con project-generator, coméntalo en la sección de issues. Si sigues con motivos en contra, por lo menos no dejes de utilizar CMake para cualquier proyecto C/C++.
- Utiliza UpperCamelCase para nombres de librerías y de clases.
- Utiliza lowerCamelCase para nombres de ejecutables.
- NO utilizar números en nombres de ficheros para indicar versiones/intentos/iteraciones... ¡Para eso ya existen los hash y tag de los sistemas de control de versiones!
- Mantén un main() minimalista: implementa tu programa como una clase.
- En C++ solemos hacer que la clase principal herede de yarp::os::RFModule, con lo cual se dispone de un configure(yarp::os::ResourceFinder& rf) que recibe un diccionario (rf) pasado desde el main(), un close() que se llama con la señal CRTL+C, y una función updateModule() llamada periódicamente, con una periodicidad lenta [segundos] dada por getPeriod(). Si se necesita una función que se llame rápidamente, heredando de yarp::os::RateThread se obtiene una función run() que es llamada con una periodicidad [milisegundos] especificada en el constructor.
- Si tienes un dispositivo, impleméntalo como una clase, idealmente como un YARP device.
- Tests, tests, tests! Idealmente, para cada clase, y desarrollado a la par de la clase.