Foro de elhacker.net

Programación => Java => Mensaje iniciado por: padiuwu en 22 Abril 2019, 02:30 am



Título: Boton retirar JAVA
Publicado por: padiuwu en 22 Abril 2019, 02:30 am
Alguien que me pueda ayudar a reducir este codigo, creo que tengo demasiados if
Código
  1. if (e.getSource() == this.forminventario.btnRetirar) {
  2.            int fila = this.forminventario.tbProducto.getSelectedRow();
  3.            if (fila >= 0) {
  4.                try {
  5.                    int codigo = Integer.parseInt(modelotabla.getValueAt(fila, 0).toString());
  6.                    int oldStock = dbproducto.getProducto(codigo).getStock();
  7.                    if (oldStock <= 0) {
  8.                        JOptionPane.showMessageDialog(null, "*EL PRODUCTO NO ESTÁ DISPONIBLE*", "Error", 0);
  9.                    } else {
  10.                        int retirar = Integer.parseInt(JOptionPane.showInputDialog(null, "NUMERO DE PRODUCTOS A RETIRAR", "Retiro de Producto", 3));
  11.                        if (dbproducto.isExiste(codigo)) {
  12.  
  13.                            if (retirar >= oldStock) {
  14.                                dbproducto.retirar(codigo, (0));
  15.                                JOptionPane.showMessageDialog(null, "PRODUCTO RETIRADO CORRECTAMENTE", "Success", 1);
  16.                                cargarTabla("");
  17.                            } else if (retirar != 0) {
  18.                                dbproducto.retirar(codigo, (oldStock - retirar));
  19.                                JOptionPane.showMessageDialog(null, "PRODUCTO RETIRADO CORRECTAMENTE", "Success", 1);
  20.                                cargarTabla("");
  21.                            } else {
  22.                                JOptionPane.showMessageDialog(null, "*ERROR*", "Error", 0);
  23.                            }
  24.                        }
  25.                    }
  26.                } catch (Exception ex) {
  27.                    Logger.getLogger(ControladorProducto.class.getName()).log(Level.SEVERE, null, ex);
  28.                }
  29.            } else {
  30.                JOptionPane.showMessageDialog(forminventario, "SELECCIONE UN REGISTRO");
  31.            }
  32.        }


Título: Re: Boton retirar JAVA
Publicado por: rub'n en 22 Abril 2019, 02:34 am
No uses geshi nunca, como quinta ves que te lo decimos.

No hace falta que crees otro tema, usa el botón editar.

Edita los otros temas y así aprendes.

Con respecto a la pregunta, divide y vencerás, distribuye esos if en métodos que te retornen valores booleanos, o sin retorno, tienes muchas maneras de resolverr.


Título: CalgaryCorpus
Publicado por: CalgaryCorpus en 22 Abril 2019, 21:25 pm
En la linea 11 preguntas si El products existe, pero en la linea 6 preguntaste si habia stock. Es posible que El producto no exista en ese punto?
Para mi, parece imposible y por tanto superfluo hacer ese if ahi.

Los ifs que comparan retirar y oldstock hacen lo mismo para Las 2 primeras condiciones. Por que no hacer solo 1 if para ambos casos (por ejemplo if retirar > 0 y quedarse solo con El codigo maa generico (El que resta oldStock y retirar)

No captures la exception aqui para disminuir El tamaño de este codigo y en general no captures la exception generica, Sino captura solo la exception especifica que se produce, tal vez la exception ocurre porque no chequeas que El products existe ANTES de obtener El stock?