Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Tuplado en 14 de Octubre 2012, 15:35

Título: Refactorizar y probar en java un codigo
Publicado por: Tuplado en 14 de Octubre 2012, 15:35
Me gustaría saber como se refactoriza y se prueba este trozo de código.

Código: [Seleccionar]
public class Forma {
public static final int CUADRADO = 1;
public static final int CIRCULO = 2;
public static final int TRIANGULO_RECTO = 3;
private int tipoForma;
private double size;
public Forma(int tipoForma, double size) {
this.tipoForma = tipoForma;
this.size = size;
}
// ... other methods ...
public double area() {
switch (tipoForma) {
case CUADRADO: return size*size;
case CIRCULO: return Math.PI*size*size/4.0;
case TRIANGULO_RECTO: return size*size/2.0;
}
return 0;
}
}



Muchas gracias de antemano.
Título: Re:Visualizar y probar en java un codigo
Publicado por: nosferacento en 14 de Octubre 2012, 21:29
¿A qué te refieres con refactorizar? Refactorizar suele aludir a reordenar el código, pero esto suele hacerse con algún fin. ¿Qué fin es el que persigues? Por ejemplo podríamos refactorizar empleando if ... en lugar de switch, pero se supone que si hacemos esto es buscando algo ¿qué buscas? Otra forma de refactorizar sería definir cuadrado, circulo y triangulo_recto como subclases de forma. Esto sería bastante lógico y adecuado a la programación orientada a objetos, ya que usaríamos herencia. Esta sería una refactorización que yo probablemente haría, pero no entiendo bien qué es lo que buscas.

Y respecto a las pruebas, a la hora de probar tienes que definir qué quieres probar. Por ejemplo, podríamos querer probar distintas cosas:

a) Que se pueden crear objetos de tipo Forma
b) Que se pueden crear objetos de tipo Forma cuyo atributo tipoForma sea 1
c) Que se pueden crear objetos de tipo Forma cuyo atributo tipoForma sea 2
d) Que se pueden crear objetos de tipo Forma cuyo atributo tipoForma sea 3
e) Que el cálculo de área para un objeto de tipo Forma cuyo atributo tipoForma es CUADRADO devuelve un valor correcto
f) Que el cálculo de área para un objeto de tipo Forma cuyo atributo tipoForma es CIRCULO devuelve un valor correcto
g) Que el cálculo de área para un objeto de tipo Forma cuyo atributo tipoForma es TRIANGULO_RECTO devuelve un valor correcto

Si vas a refactorizar lo lógico es primero refactorizar y luego plantear las pruebas.

Para plantear las pruebas, lo primero que tienes que saber es qué quieres probar.