quinta-feira, 20 de julho de 2017

Refatoração de Codigo Java

Olá!
Me solicitaram uns novos argumentos a esta janela:


No caso são os tipos de motoristas(Funcionario,Agregado e Terceiro). Até bacana mas senti que precisava ser dinâmico independente da escolha caso nao fosse assim nao estaria interessante. Pensei em como iria implementar este codigo tentei varias coisas ontem, mas sem sucesso, isso por que programar de cabeça cheia nao dá. Ai fiz o de sempre no caminho para casa por 25 km fiquei pensando em como solucionar meu problema, e então saiu o primeiro codigo que deu certo:

Ai olhei para esse codigo e pensei.. que feio.. deve ter alguma forma de melhorar esse codigo fazendo de outra maneira, ai me ocorreu usar  de mudar e pensei no seguinte. Tenho 3 JCheckBoxp posso usar um Case e colocar  o codigo dentro de 2 casos, Ai criei um metodo que armazenava os JCheckBox ao um List caso eles estivessem selecionados.
Pronto com isso eu consegueria pegar a quantidade e quais  JCheckBox estariam selecionados. Dai foi so juntar A+B, o switch  case recebia  o total da lista e dentro de cada caso havia um codigo diferente, conforme podemos ver a baixo utilizei o proprio texto do componente como clasula da pesquisa ja que eram identicos as categorias.

Olha que belezinha comparando a quantidade de linhas com o primeiro codigo esse ai tem apenas 10 e com uma cara muito mais limpa e clara sem falar legivel.

Recebe os JCheckBox caso tenha 1 seja ele qual for concatena com a String que ja havia com o codigo mais generico e observem como pego o argumento se so tem 1 com certeza  esta na posição 0 do list, depois pego o texto descrito no componente e o transformo todas as letras para Maiusculas, Ai esta o primeiro. No Segundo precisei adicionar um pouco mais  por causa da propria pesquisa mas a ideia foi praticamente a mesma do 1.

E é isso refatorem sempre que der os codigos reduza o tamanho melhore os metodos e vamos continuar com as boas praticas.