Refatoração de Código retirando if's

2 respostas
Paulo_Faulstich

Dae pessoal,

Achei o meu código meio feio e gostaria de perguntar se alguém tem alguma sugestão pra eu melhorar.

O que acontece é que eu tenho que comparar strings.

O contexto: método que passa uma string como parâmetro e dependendo da string que entrar por parametro eu retorno outra string:

Segue código para que entendam.

abstract class Teste() {

     public static String getProductId(String productName) {

        String productId = "";                

        if (productName.trim().compareTo("produto a") == 0) {           
            productId = "324";
        } else if (productName.trim().compareTo("produto b") == 0) {
            productId = "323";  
        } else if (productName.trim().compareTo("produto c") == 0) {
            productId = "321";  
        } else if (productName.trim().compareTo("produto d") == 0) {
            productId = "320";
        } else if (productName.trim().compareTo("produto e") == 0) {

            // continua os testes

     }

}

Como podem ver eu comparo a string que entra por parametro com strings estaticas ex: “product a” , “product b” etc …

Pelo que eu vi os caras utilizam enum para esse tipo se situação, mas não sei como implementar para essa situação.

Acho que o ideal seria eu criar um enum do tipo.

enum blabla {

   codigogoProductA("product a");
   codigogoProductb("product b");

}

Dai comparo com a chave retornada do enum ao invés de ter a string statica no meu código, com isso centralizaria e se um dia precisasse alterar o código de algum produto só mudaria no enum.

O que acham amigos.

Abraço.

2 Respostas

rmendes08

Você pode usar uma HashMap também:

class Test{
  Map <String,String> produtos = new HashMap<String,String>();

  {
    produtos.put("produto a","324");
    produtos.put("produto b","325");
    produtos.put("produto c","326");
  }

  String getProdutoId(String chave){
     return produtos.get(chave);
  }
}
Paulo_Faulstich

Valeu amigo isso já melhora bastante o código e centraliza a informação, assim quando precisar alterar altero só nessa classe.

Abraço.

Criado 1 de agosto de 2009
Ultima resposta 3 de ago. de 2009
Respostas 2
Participantes 2