Duvida em um Método

6 respostas
malves_info

Tenho o seguinte metodo:

public ResultSet consultaCargo(int op,int id,String dados) throws SQLException{
        //Opção que retorna todos os cargos cadastrado
    	if(op == 1 ){
            rs = stm.executeQuery("select id_cargo,nome_cargo from cad_cargo");
            return rs;
        }
    	//Opção para busca de um cargo informado pelo usuário ou programa
    	if(op == 2){
            rs = stm.executeQuery("select id_cargo,nome_cargo from cad_cargo where id_cargo = '"+id+"'");
            return rs;
        }
    	//Opção para busca de cargos que não estão definidos para o funcionário
    	if(op == 3){
            rs = stm.executeQuery("select id_cargo,nome_cargo from cad_cargo where id_cargo NOT IN (select fk_cargo " +
		                  "from cad_cargo,cad_funcionario,funcionario_cargo " +
					"where id_cargo = fk_cargo " +
					"and id_funcionario = fk_funcionario " +
					"and fk_funcionario = '"+id+"') order by nome_cargo");
            return rs;
    	}
        if(op == 4){
            rs = stm.executeQuery("select nome_cargo from cad_cargo where nome_cargo = '"+dados+"'");
        }
        return null;
    }

Deu pra perceber que este metodo tem 4 funções diferentes dependendo da que for passada por parametro vai ser executada uma delas. Minha duvida é, seria melhor eu fazer de outra forma como sobrecarga de método ou não?

6 Respostas

F

Polimorfismo tem uns exemplos praticos.

Kassiane_Pretti

Pq vc não troca os ifs por switch…

T

Você pode definir vários métodos com o mesmo nome mas diferentes parâmetros (veja que “id” é usado apenas em duas das consultas, e “dados” em apenas uma das consultas. )
Você também pode definir vários métodos com nomes diferentes, para facilitar a compreensão, se eles efetivamente fizerem coisas diferentes. No seu caso:

consultaTodosCargos()

consultaCargoPorId (int idCargo)

consultaCargoNaoDefinido (int idCargo)

consultaCargoPorNome (String nomeCargo)

Não use palavras muito genéricas (no seu caso você usou “dados”). Use a palavra certa (por exemplo, “nomeCargo”).

T

Coisas que têm cheiro de genéricas:

“processar”
“executar”
“dados”
“contador”
“tmp”
“consultar”

Se você achar alguma variável ou método com algum nome desses (sem a especificação completa, por exemplo “dadosCliente” ou coisa parecida) é interessante renomear, a menos que seja efetivamente genérica.

Antigamente a nossa área não se chamava “Informática” ou “TI” e sim “Processamento de Dados”.

malves_info

fnascimento Este método implementa uma assinatura de uma interface. Poderia adicionar 3 metodos com mesmo nome na interface so que com assinaturas diferentes e implementar cada um.
KassiPretti eh acho que vou trocar pra switch é mais legível e prático

malves_info

thingol Valeu pela dica :smiley:

Criado 11 de janeiro de 2008
Ultima resposta 11 de jan. de 2008
Respostas 6
Participantes 4