Ver Mensaje Individual
  #8 (permalink)  
Antiguo 27/09/2014, 20:58
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: simplificar este código

Hola,

Posiblemente,

Cita:
Iniciado por AGmzT Ver Mensaje
Hola gente! escribi este código y quisiera saber como simplificarlo muchas gracias!! ...
Código Java:
Ver original
  1. float costo, desc0, desc1, desc2, desc3, desc4, desc5, desc6, desc7, desc8, desc9, costoDesc;
  2.  
  3. public float getCostoDesc() {
  4.   float[] desctos = {(100-desc0), (100-desc1), (100- desc2), (100- desc3), (100-desc4),
  5.                     (100- desc5), (100- desc6), (100- desc7), (100- desc8), (100- desc9)};
  6.   int i = desctos.length - 1;
  7.   while (i >= 0 && desctos[i] == 0.0f) {
  8.     i--;
  9.   }
  10.   costoDesc = costo;
  11.   while (i >= 0) {
  12.     costoDesc *= desctos[i--];
  13.   }
  14.   return costoDesc;
  15. }

Técnicamente hace exactamente lo mismo que el código inicial pero de una forma diferente. No puedo decir simplificado realmente, sino mas corto. Mas simple que el código inicial creo que no es posible.

Cita:
Iniciado por AGmzT Ver Mensaje
... Les comento que las variables desc.. no siempre van a ser instanciadas por el usuario, y dado que los

miembros del arreglo son el resto de 100- desc.. siempre van a tener valor mayor a 0, de hecho en

el constructor (si no son instanciadas por el usuario) toman un valor fijo que no afecta el producto.
Técnicamente que sean 100-desc no implica que siempre van a tener un valor mayor a 0, 100 - 100 es igual a 0. Pero bueno, si ese es el objetivo real de tu aplicación entonces todo está bien.

Simplemente a mi me pareció extraña la operación y pensé que posiblemente querías porcentajes (por el 100) y no es el caso. También si la lógica de tu aplicación se encarga de inicializar los valores correctamente pues todo sigue bien.

Saludos,