5 buenas practicas
TRANSCRIPT
Buenas Practicas
Test Driven Development ¿Qué es? Primero escribimos un caso de prueba y solo
después implementamos el código necesario para que el caso de prueba se pase con exito
Las pruebas se preparan antes de comenzar a escribir el código
Buenas Practicas
Ventajas Al escribir primero los casos de prueba, definimos
de manera formal los requisitos que esperamos que cumpla nuestra aplicación.
Pensamos como va a funcionar un trozo que todavía no existe, adelantando posibles problemas de diseño.
Perder miedo a realizar cambios en el código, ya que cada vez que realicemos un cambio tenemos una serie de testigos para localizar el error, los tests.
Buenas Practicas
Desventajas Desconocimiento de como hacer tests Cambio de mentalidad del programador Falta de formación
Buenas Practicas
Ciclo de construcción de software Pasos
Agregar un nuevo caso de prueba Ejecutar los casos de prueba (fallarán) Realizar los cambios en la implementación para
pasar los casos de prueba Volver a pasar los casos de prueba (Si todo ha
ido bien, se pasarán) Refactorizar el código para mejorar el diseño Volver a pasar los casos de prueba.
Buenas Practicas
Ciclo de construcción de software Este ciclo debe ser constante De esta manera se podrá obtener una cultura de
testing en el equipo de desarrollo De esta manera se perderá el ”miedo” a realizar
cambios en el código Mejoraremos en cada iteración la calidad del
código
Buenas Practicas
¿Qué es? Es un framework sencillo para escribir y ejecutar
tests automatizados Página principal : http://www.junit.org/ Es el framework de testeo más utilizado en Java. Ya van por la versión 4.8.1
Junit
Ventajas Sencillo de utilizar. Flexible. Se puede utilizar o mediante anotaciones
o mediante herencia de clases. Adoptado por la mayoría de IDE's
Desde sus inicios ha tenido sus propias consolas de ejecución dentro de Eclipse y Netbeans
Además posee su propio entorno gráfico para ejecutar tests sin necesidad de un IDE.
Junit
Junit y TDD Durante la charla se irá realizando una serie de
casos aplicando TDD utilizando Junit como herramienta de testeo de la aplicación.
Junit
¿Como crear un test ? Heredando TestCase Utilizando Anotaciones
Junit
Elementos de TestCase Métodos testXXX
Es donde implementaremos el código que testee la lógica que queramos comprobar
Junit
Elementos de TestCase Metodos auxiliares
setUp() Sirve para inicializar parte del código que no
queramos repetir en todos los test. Se ejecuta una vez antes de cada test
tearDown(): Metodo para liberar recursos una vez el test haya
terminado. Se ejecuta una vez al final de cada test.
Junit
Elementos de TestCase Métodos estáticos assertXXX
(assertTrue,assertEquals...) Sirven para realizar las comprobaciones, si la
comprobación que hace ese método no es la que se esperaba el test no finaliza con exito.
Junit
Creando un test con TestCase Creamos una clase que herede de
junit.framework.TestCase Creamos tantos métodos testXXX como casos de
uso queramos testear.
JUnit
Ejecución de tests Dentro de Eclipse
Nos situamos encima de la clase y pulsamos sobre runAs → Junit Test
Nos aparecerá una consola de ejecución de test que nos informará del estado de los tests.
Junit
Ejecución de tests Desde maven
Vamos al directorio del proyecto a través de una consola y ejecutamos mvn test
Si se tiene instalado el plugin de Maven2 de Eclipse situarse sobre la carpeta del proyecto y con botón derecho pulsar runAs → Maven test
Junit
Utilizacion de anotaciones Ventajas
Version 4.5 y superiores Flexibiliza la creación de los tests No hay que seguir la convención de nombres
testXXX Tampoco hay que seguir la convención de los
métodos setUp() y tearDown()
Junit
Utilización de anotaciones Desventajas
Los métodos assertXXX deben llamarse a través del nombre de la clase TestCase.assertXXX
Junit
Utilización de anotaciones @Test : sustituye a la convención de métodos
testXXX. Ahora todo método que se quiera testear debe llevar la anotación @Test
@Before: sustituye a la convención del método setUp()
@After: sustituye a la convención del método tearDown()
Junit
Ejemplo: Creación de un Test con anotaciones Utilizamos un método para inicializar MiServicio Utilizamos un método para asignar null a la
instancia de MiServicio Utilizamos un método para testear que el método
getMensaje() del objeto MiServicio nos devuelve ”Mensaje para mi”
Junit
Ejemplo: creación de un Test con anotaciones
Buenas Practicas
Una serie de practicas que hacen el desarrollo de software más eficiente y menos propenso al error. Entre otras:
TDD Conocimiento avanzado del lenguaje Aplicación de patrones de diseño Otras metodologías ágiles
Buenas Practicas
Conocimiento avanzado
Buenas Practicas
Crear y destruir objetos Crear factorias para crear objetos. AbstractFactory
Considerar utilizar el patrón Builder para la creación de objetos complejos.
Buenas Practicas
Métodos comunes a todos los objetos Como vimos anteriormente es importante tener un conocimiento preciso de los
siguientes métodos, sobre todo si estamos manejando contenedores de objetos:
equals() hashCode() toString()
También el uso del interfaz Comparable cuando tratabamos un SortedSet o un SortedMap
Buenas Practicas
Utilización de interfaces Siempre que se pueda el uso de interfaces nos permitirá reducir el nivel de
acoplamiento entre componentes de una aplicación.
Buenas Practicas
Conocimiento avanzado - Genericos
Buenas Practicas
Genericos Nacen con Java 1.5
Puedes crear clases-plantilla y favorecer soluciones ”Genericas”
Puedes crear contenedores de objetos de un tipo determinado.
Evitan que se pueda agregar a un contenedor de objetos de un tipo objetos de otro tipo diferente.
Muy utiles pero poco explotados
Buenas Practicas
Utiliza los genéricos en tus contenedores Anteriormente se podía mezclar por error varios
tipos de objetos en el mismo contenedor.
Buenas Practicas
Utiliza los genéricos en tus contenedores Ahora si intentamos introducir un tipo para el que no ha sido creado el
contenedor nos fallará en tiempo de compilación.
Reducimos el código a la hora de recorrer el contenedor
Buenas Practicas
Tipos enumerados
Buenas Practicas
Tipos enumerados Agregados en java 1.5
Es un tipo cuyos valores consisten en unas constantes definidas.
Antes de los Enumerados había que crear variables constantes.
Favorecen el tipado fuerte
Buenas Practicas
Tipos Enumerados Antes había que utilizar constantes estaticas, aun asi podiamos equivocarnos a
la hora de asignar valor.
Ahora los tipos enumerados son más descriptivos. Y son mucho más seguros.
Buenas Practicas
Métodos
Buenas Practicas
Métodos Escoge bien el nombre de los métodos. Deben ser suficientemente
descriptivos
Evitar métodos con muchos parametros. Es mejor encapsular los parametros en un objeto.
Buenas Practicas
Métodos Comprueba la validez de los parametros
Puedes lanzar excepciones en el caso de que no se cumpla alguna de las condiciones de los parametros.
Métodos Devuelve arrays o colecciones vacias, no nulls.
De esta manera evitamos tener que comprobar si se han inicializado.
Buenas Practicas
Métodos COMENTARIOS
No todo el mundo tiene que saber a primera vista que hace el método
Sobre todo deben comentarse aquellos métodos que formen parte del nucleo del API.
Métodos de los interfaces, clases abstractas.
Buenas Practicas
General
Buenas Practicas
Practicas generales Preferir los bucles for-each a los bucles tradicionales. Los nuevos bucles desde
la versión 1.5 son menos proclives a error y además necesitan menos codificación.
Versión nueva
Versión antigua
Buenas Practicas
Practicas generales Utilizar las variables primitivas siempre que se pueda.
Aunque poco el Autoboxing reduce el rendimiento por pasar de primitiva a Wrapper.
Además mientras que al comparar dos primitivas se utilizará == con dos objetos wrapper lo normal es que se utilice equals()
Buenas Practicas
Evitar cadenas de texto donde sean más apropiadas otros tipos.
Son malas sustitutas para los tipos enumerados Son malas sustitutas para los tipos agregados
Buenas Practicas
Eficiencia en la concatenación de cadenas de caracteres:
Utilizando la concatenación de strings repetidamente requiere bastantes recursos.
Utilizar siempre que se pueda StringBilder