---
# System prepended metadata

title: Untitled

---

### Aplicação Jogo da velha Sokets
#### Band Smell
#### Extração de método
Na Classe main com código vencedor duplicado
```
if (!jogo.Vencedor(jogadas).equals("null")) {
                System.out.println("Parabens, Você Venceu");
                jogar.enviar_mensagem(posição);
                break;
            }
```
#### Solução
Foi criado um método que pode ser solicitado no código.
```
private static boolean Vencedor_Da_Partida(String jogador) {
        if (!jogo.Vencedor(jogadas).equals("null")) {
            System.out.println("Parabens, O " + jogador + " Venceu");
            return false;
        }
        return true;
    }
```
#### Refatoração
Classe man com Varias linhas de codigos sem estrutura adequada
```
 public static void main(String[] args) throws Exception {
        Jogador1 jogar = new Jogador1("127.0.0.1", 15500);
        Scanner tec = new Scanner(System.in);
        JogoJogador1 jogo = new JogoJogador1();
        String posição, resposta;
        int valida = 0, jogadas = 0;
        /*
        ------Jogo Começa aqui-------
        1 : 2 : 3       As Posiçoes são noemadas de
        ...........     1 a 9 na qual o jogador deverar escolher
        4 : 5 : 6
        ...........
        7 : 8 : 9
        jogo.Valido => Verifica se a posiçao e valida
         */        
        while (true) {

            do {//inicia jogador 1
                System.out.println("::::::::Jogo da velha::::::::");
                jogo.Implesão();
                System.out.println("Jogador 1 Informe uma posicao: ");
                posição = tec.next();
                while (!jogo.Valido(posição)) {
                    System.out.println("Jogada Invalida");
                    System.out.println("Jogador 1 Informe uma posicao: ");
                    posição = tec.next();
                    valida = 0;
                }
                jogo.Jogada(posição, "X");
                valida = 1;

            } while (valida == 0);//fim jogador 1
            if (!jogo.Vencedor(jogadas).equals("null")) {
                System.out.println("Parabens, Você Venceu");
                jogar.enviar_mensagem(posição);
                break;
            }
            jogar.enviar_mensagem(posição); // enviando posição
            jogadas++;
            valida = 0;
            

            do {//inicia jogador 2
                System.out.println("::::::::Jogo da velha::::::::");
                jogo.Implesão();
                System.out.println("Aguardando Jogador...");
                posição = (String) jogar.receber_mensagem();

                jogo.Jogada(posição, "O");
                valida = 1;

            } while (valida == 0);//fim jogador 2

            jogadas++;
            valida = 0;
            if (!jogo.Vencedor(jogadas).equals("null")) {
                System.out.println("O jogador 2 Vencel");
                break;
            }

        }

        //jogar.enviar_mensagem("Ola, eu sou o cliente!");
        //String resposta = (String) jogar.receber_mensagem();
        //System.out.println("Mensagem do Servidor: " + resposta);
        jogar.finalizar();
    }
```
Classe main cahamndo a método Iniciar_Jogo o que torna mais organizado
```
public static void main(String[] args) throws Exception {
        Iniciar_Jogo();
    }
```
método Iniciar_Jogo
```
public static void Iniciar_Jogo() throws Exception{
    jogar = new Iniciar_Jogo_da_Velha("127.0.0.1", 15500);
        while (teste) {
            Inicia_Jogador1();
            teste = Vencedor_Da_Partida("Jogador 1");
            Inicia_Jogador2();
            teste = Vencedor_Da_Partida("Jogador 2");
        }
        jogar.finalizar();
}
```
### Grador_de_Senha
#### Renomeação de métodos
Método Gerador_de_senha antes da renomeação de variavel
```
public static int geradorSenha(String nome){
        String senha = "";
        String vetorNome[] = nome.split(" ");
        for (int i = 0; i < vetorNome.length; i++) {
            senha += vetorNome[i].length();
        }
        return Integer.parseInt(senha);
    }
```
Método Gerador de senha com a variavel do loop for renomeado.
```
public static int geradorSenha(String nome){
        String senha = "";
        String vetorNome[] = nome.split(" ");
        for (int conatdor = 0; conatdor < vetorNome.length; conatdor++) {
            senha += vetorNome[conatdor].length();
        }
        return Integer.parseInt(senha);
    }
```
