Buenas prácticas

From Asibot & HOAP3 & TEO Wiki
Jump to: navigation, search
  • 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). Consulta con tu tutor (que posiblemente te redirija a Juan, David o Raúl) si dudas en qué repositorio trabajar. Acomoda tu .gitignore al tipo de proyecto, para evitar subir ficheros que no se deberían (binarios, backups, y ficheros residuales varios).
    • Redacción de publicaciones: Consulta con tu tutor (que posiblemente te redirija a Juan) para la URL exacta, distribuidos a través de http://robots.uc3m.es/svn/* (SVN, privado)
  • Siempre, cuando tengas una duda, busca en esta wiki, y busca entre las issues (tanto abiertas como cerradas) del repositorio asociado a tu trabajo. Si no encuentras respuesta, pon una issue en el repositorio asociado a tu trabajo (o comenta en la pestaña de Discussion de la wiki). Ventajas:
    • Incrementa la productividad global, porque queda el histórico. Se tiende a evitar el estar repetiendo las mismas preguntas y generando las mismas respuestas.
    • Sirve de herramienta para tratar de mantiener lo técnico dentro del contexto técnico, y a centrarse la temática forzada por el asunto de la issue.
    • Da mayor visibilidad a tu duda, te puede contestar gente que no te esperarías. Esto es especialmente interesante cuando hay un desacuerdo entre dos partes: pueden intervenir terceros que aporten nuevas ideas y puntos de vista.

Programación en General

Programación C/C++

  • Para crear un nuevo proyecto C/C++, utiliza project-generator.
  • Si hay problema con project-generator, coméntalo en su 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.
  • En C++, evita el uso de variables globales.
  • Mantén un main() minimalista: implementa tu programa como una clase.
  • Si tienes un dispositivo, también impleméntalo como una clase, idealmente como un YARP device.
  • Crea un test para cada clase, desarrollándolo a la par de la clase. En la actualidad utilizamos gtest, como en kinematics-dynamics/test/testKdlSolver y yarp-devices/tests/testTechnosoftIpos.