Difference between revisions of "Buenas prácticas"
Jump to navigation
Jump to search
Jgvictores (talk | contribs) |
Jgvictores (talk | contribs) |
||
Line 2: | Line 2: | ||
* 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. | ||
+ | * 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. | * Mantén un main() minimalista: implementa tu programa como una clase. | ||
** En C++ solemos hacer que la clase principal herede de [http://www.yarp.it/classyarp_1_1os_1_1RFModule.html yarp::os::RFModule], con lo cual se dispone de un [http://www.yarp.it/classyarp_1_1os_1_1RFModule.html#a6c3880961b00b0a7eb527d62214169b7 configure(yarp::os::ResourceFinder& rf)] que recibe un diccionario ([http://www.yarp.it/classyarp_1_1os_1_1ResourceFinder.html rf]) pasado desde el main(), un [http://www.yarp.it/classyarp_1_1os_1_1RFModule.html#a58ce26fc6fdcb6eb4af8e8dc678e095e close()] que se llama con la señal CRTL+C, y una función [http://www.yarp.it/classyarp_1_1os_1_1RFModule.html#a37ee5baa17ce243458a1dff209e878b7 updateModule()] llamada periódicamente, con una periodicidad lenta [segundos] dada por [http://www.yarp.it/classyarp_1_1os_1_1RFModule.html#ace2fdadde1a2690f274079fabd6420d2 getPeriod()]. Si se necesita una función que se llame rápidamente, heredando de [http://www.yarp.it/classyarp_1_1os_1_1RateThread.html yarp::os::RateThread] se obtiene una función [http://www.yarp.it/classyarp_1_1os_1_1RateThread.html#ac3c97e766733b41a45c799aa0c05598f run()] que es llamada con una periodicidad [milisegundos] especificada en el constructor. | ** En C++ solemos hacer que la clase principal herede de [http://www.yarp.it/classyarp_1_1os_1_1RFModule.html yarp::os::RFModule], con lo cual se dispone de un [http://www.yarp.it/classyarp_1_1os_1_1RFModule.html#a6c3880961b00b0a7eb527d62214169b7 configure(yarp::os::ResourceFinder& rf)] que recibe un diccionario ([http://www.yarp.it/classyarp_1_1os_1_1ResourceFinder.html rf]) pasado desde el main(), un [http://www.yarp.it/classyarp_1_1os_1_1RFModule.html#a58ce26fc6fdcb6eb4af8e8dc678e095e close()] que se llama con la señal CRTL+C, y una función [http://www.yarp.it/classyarp_1_1os_1_1RFModule.html#a37ee5baa17ce243458a1dff209e878b7 updateModule()] llamada periódicamente, con una periodicidad lenta [segundos] dada por [http://www.yarp.it/classyarp_1_1os_1_1RFModule.html#ace2fdadde1a2690f274079fabd6420d2 getPeriod()]. Si se necesita una función que se llame rápidamente, heredando de [http://www.yarp.it/classyarp_1_1os_1_1RateThread.html yarp::os::RateThread] se obtiene una función [http://www.yarp.it/classyarp_1_1os_1_1RateThread.html#ac3c97e766733b41a45c799aa0c05598f run()] que es llamada con una periodicidad [milisegundos] especificada en el constructor. | ||
* Si tienes un dispositivo, impleméntalo como una clase, idealmente como un [http://asrob.uc3m.es/index.php/Tutorial_yarp_devices YARP device]. | * Si tienes un dispositivo, impleméntalo como una clase, idealmente como un [http://asrob.uc3m.es/index.php/Tutorial_yarp_devices YARP device]. | ||
* Tests, tests, tests! Idealmente, para cada clase, y desarrollado a la par de la clase. | * Tests, tests, tests! Idealmente, para cada clase, y desarrollado a la par de la clase. |
Revision as of 11:56, 2 May 2016
- 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.