Archivos de la categoría General

Clean Code

1) Meaningful Names

Usar nombre relevantes y de intención. No usar una variable llamada «d» y si «fileAgeInDays»

Evitar usar nombres  que no den información.

No usar como nombre el tipo de variable que es. No usar «accoundList pero si accounds».

Evitar la desinformación.

No usar nombres largos que solo se diferencien en una palabra. No usar el mismo nombre para cosas que signifiquen lo mismo.

No usar nombres que sean impronunciables. Ej: genymdhns.

Usar nombres que sean fáciles de buscar.

No usar prefijos.

Si tenemos interfaces e implementaciones, es preferible poner «Impl» a la implementación que no «I» a la interface.

Los nombres de clase tiene que ser nombres. No deben ser un verbo.

Los nombres de los métodos tienen que ser verbos.

No usar nombres graciosos.

Una palabra, un concepto.

Usar nombres por contexto. Ej: «State» de dirección y estado de la variable.

2) Functions

Las funciones tienen que tener un tamaño reducido. Tiene que ser lo suficientemente grande que se pueda entender.

Las funciones solo deben hacer una cosa. Deben hacerlo bien y deben ser lo único que hagan.

Para validar que solo hace una cosa, se puede escribir usando un párrafo con TO.

Las funciones tienen que contener elementos que estén en el mismo grado de abstracción. No mezclar niveles de abstracción.

Poner las funciones de abajo a arriva.

No usar un switch. Usar una factoría de objetos y solo usar el switch para crear estos objetos. Un switch viola el principio de responsabilidad único y el de abierto cerrado.

Invierta tiempo en elegir un nombre y cámbielo las veces que sea necesario. Tienen que ser descriptivos.

Es mejor no usar parámetros para llamar a las funciones. Cuantos más argumentos, más difícil es de testear el código. Hay que disminuir el número de argumentos, por ejemplo, añadiéndolo a un objeto.

Si añadimos contexto a los nombres, podemos mejorar su lectura. Ej: write(name), es mejor writeField(name).

No usar parámetro boolean que signifiquen comportamiento.

Los argumentos de entrada es preferible que no sean de salida.

No usar código de errores, es mejor usar excepciones. Al usar clave de errores, se acopla el código a estos errores ya existentes, no se añaden códigos nuevos, se reutilizan los antiguos… con las excepciones se pueden añadir nuevas sin problema.

Los bloques try y catch es mejor extraer su cuerpo en funciones individuales.

Solo tener un punto de entrada y un punto de salida. Solo tener un return dentro de la función.

Una buena forma de trabajo es:

  • Estructurar las ideas
  • Crear funciones, no importan que sean extensas o complicadas, con sangrados y bucles anidados. Los nombres son arbitrarios, la lista de argumentos son extensas, código duplicado… pero con una batería de pruebas que abarcan todas las líneas
  • Retocar el código, dividirlo en funciones, cambiar nombres, eliminar duplicados.
  • Al final, se consigue que se cumplan las reglas descritas.

Escribir el código es como contar una historia.

Las funciones tienen que ser breves, con nombres correctos y bien organizadas.

Control de versiones – Trunk, Branch y Tag

Trunk, branch y tag son tres de los principales conceptos que tenemos que tener claro a la hora de usar un control de versiones. No nos importa el sistema de control de versiones que usemos, ya que son conceptos globales. Estos conceptos existen en CVS, Subversion, Git o Mercurial

  • Trunk (tronco): la línea o rama principal de desarrollo. Sobre esta rama se tiene el código que ya está preparado para una release. Idealmente debería tener un control de pruebas, test,… que permita que este código esté en un estado estable.
  • Branch (rama): copia de código para hacer cambios. Lo ideal es que cada desarrollador trabajara en su rama y luego, una vez validado los cambios, hiciera la integración con trunk.
  • Tag (etiqueta): sirve para identificar un cierto momento en el desarrollo que queremos preservar. Lugar ideal para marcar cambios de versión (alfas, betas, RC, RTM) y puntos de interés como copias de despliegues. Sobre un tag no se puede / no se debe hacer cambios.

AOS 2014

El 2014/06/06 y 2014/06/07 se celebró en Valladolid el AOS, el Agile Open Space.

Este era mi primer Open Space al que asistía. Me habían hablado de él como algo muy interesante. Pues como me lo pintaron tan bien, tuve que ir, que remedio XD.

 

VIERNES

 

Nada más llegar, uno se encuentra con viejos amigos:

IMG_4577IMG_4591

 

Después de una presentación por parte del director de la escuela, del representante de los organizadores, propuesta un poco larga de temas y de una gran comida picnic, preparados para aprender.

 

Posibles charlas:

IMG_20140606_132306

 

De este primer día aprendí:

  • Test unitarios no por clase, sino por funcionalidad
  • Hay que hacer un esfuerzo extra si el equipo está deslocalizado
  • Preparar un entorno ágil y la gente aprenderá a ser ágil.

 

Sábado

 

Muchas fuerzas cogidas para este sábado intenso de hasta 6 charlas. Más gente conocida que el viernes no pudo venir y más ganas de aprender.

Posibles charlas para el sábado:

IMG_20140607_114042

 

De este segundo día aprendí:

  • No mutilar SCRUM, añadirle cosas
  • Primero decir NO a algo y luego discutirlo
  • Si quieres colaborar con el software libre, solo tu pones las barreras
  • Cuando un código está mal, siempre hay que dejarlo mejor de lo que estaba. Y tener cuidado cuando parar.
  • Pese a lo que todos creemos, los peores problemas para implantar las metodologías ágiles, son las personas que están en el medio de la jerarquía, o eso dicen XD.

 

 

Posibles mejoras:

  • Cuando se propone los temas de las charlas, los nombres son imposibles de acordarse de ellos y luego los buscamos para poder votarlos por la localización de su cartulina en la pared. Si se tuviera un cuadro de números y letras, sería más fácil de localizar. Por ejemplo, yo quiero votar la B5, la C3, …
  • Que las cartulinas tengan colores según su temática. Divididas en metodologías ágiles, dinámicas, …
  • Que haya una sala reservadas para charlas técnicas. Llega un momento que a uno le apetece una charla así.

 

 

Muchas gracias a los organizadores, lo han hecho genial y eso que la papeleta no era fácil.

Animo a asistir a estos eventos. SIEMPRE se aprende algo.

 

Solo morimos el día que ya no queremos aprender

Instalar BQ Aquaris para hacer debug en eclipse

Para poder utilizar nuestro dispositivo para hacer debug en IDE Eclipse, tenemos que hacer unos sencillos pasos.

  1. Descargar los driver en este enlace
  2. Hacer una copia de los driver que tenemos instalados en el sdk. Por norma general lo solemos tener en la ruta adt\sdk\extras\google\usb_driver
  3. Descomprimir y sobrescribimos en la carpeta usb_driver.
  4. Ir al administrador de dispositivos y configurar el dispositivo que no nos reconoce (por lo general lo reconoce con el nombre de «Android Composite ADB Interface»). Para esto, sobre Equipo->Propiedades->Administrador de dispositivos, seleccionamos el dispositivo USB que no nos reconoce y cambiamos el controlador. Si no nos lo encuentra, decirle que lo busque sobre la carpeta adt\sdk\extras\google\usb_driver donde hemos metido los nuevos controladores.

Espero que os sea de utilidad.