将大的坏代码分解为方法

时间:2015-11-14 18:42:49

标签: java methods

所以我有这个非常糟糕的代码,我之前在这里发布只是为了看到它是aceptable,它不是,它告诉我,把它分成方法应该是我应该做的第一件事,但我我有点混淆我应该分割多少种方法? 有什么时候做一个方法的标准,什么时候不做,我常常不确定我是应该直接在main方法中编写代码,还是在其他类上做一个方法,在main方法上调用它。

import java.util.ArrayList;
import java.util.Scanner;
public class MainClass  {

    public static void main(String[]args){

        ArrayList<Pessoas> lista = new ArrayList<Pessoas>();
        Pessoas p1 = new Portugueses();
        Pessoas p2 = new Alemaes();

        lista.add(p1);
        lista.add(p2);

          System.out.println("Insira o nome de o cidadao Portugues");
          Scanner entrada = new Scanner(System.in);
          String n1 = entrada.nextLine();
          p1.setNome(n1);

        System.out.println("Insira o nome de o cidadao Alemao");

        String n2 = entrada.nextLine();
        p2.setNome(n2);


        System.out.println("Deseja inserir as idades dos 2 cidadaos?");

        String resposta = entrada.nextLine();

        if(resposta.equals("sim")){
            System.out.println("Insira a idade de o cidadao Portugues " + p1.getNome());

            int i = entrada.nextInt();
            p1.setIdade(i);

            System.out.println("Insira a idade de o cidadao Alemao " +p2.getNome());

            int i1 = entrada.nextInt();
            p2.setIdade(i1);
            }
        else if (resposta.equals("nao")){
            System.out.println("Nao vai inserir a idade dos cidadaos");
        }else{System.out.println("Comando nao reconhecido,Por favor insira sim ou nao");
        System.out.println("Deseja inserir a idade dos cidadaes?");
        while(!resposta.equals("sim")||!resposta.equals("nao")){
            System.out.println("Comando nao reconhecido,Por favor insira sim ou nao");
            System.out.println("Deseja inserir a idade dos cidadaes?");
            resposta = entrada.nextLine();
            if(resposta.equals("sim")){
                System.out.println("Insira a idade de o cidadao Portugues" + p1.getNome());
               int i = entrada.nextInt();
                p1.setIdade(i);

                System.out.println("Insira a idade de o cidadao Alemao " +p2.getNome());
                int i1 = entrada.nextInt();
                p2.setIdade(i1);
                break;
                }
            else if (resposta.equals("nao")){
                System.out.println("Nao vai inserir a idade dos cidadaos");
                break;
        }
    }
}

            System.out.println("Quer adicionar outro cidadao?");
                resposta = entrada.nextLine();
                while(resposta.equals("sim")){
                System.out.println("Deseja criar um cidadao Portugues ou Alemao?");
                resposta = entrada.nextLine();
                switch(resposta){
                 case "portugues":
                     Pessoas p3 = new Portugueses();
                     lista.add(p3);
                     System.out.println("Insira o nome de o cidadao Portugues");
                      String n3 = entrada.nextLine();
                      p3.setNome(n3);
                     System.out.println("Quer adicionar outro cidadao?");
                        resposta = entrada.nextLine();
                     break;
                 case"alemao":
                     Pessoas p4 = new Alemaes();
                     lista.add(p4);
                     System.out.println("Insira o nome de o cidadao Alemao");
                      String n4 = entrada.nextLine();
                      p4.setNome(n4);
                     System.out.println("Quer adicionar outro cidadao?");
                        resposta = entrada.nextLine();
                     break;
                default:
                    System.out.println("Insira se que criar um cidadao portugues ou alemao s.f.f");

                        do{
                            System.out.println("Deseja criar um cidadao Portugues ou Alemao?klklkk");
                            resposta = entrada.nextLine();
                             switch(resposta){
                             case "portugues":
                                 Pessoas p6 = new Portugueses();
                                 lista.add(p6);
                                 System.out.println("Insira o nome de o cidadao Portugues");
                                  n3 = entrada.nextLine();
                                  p6.setNome(n3);
                                 System.out.println("Quer adicionar outro cidadao?");
                                 resposta = entrada.nextLine();
                                 break;
                             case"alemao":
                                 Pessoas p7 = new Alemaes();
                                 lista.add(p7);
                                 System.out.println("Insira o nome de o cidadao Alemao");
                                  n4 = entrada.nextLine();
                                  p7.setNome(n4);
                                 System.out.println("Quer adicionar outro cidadao?pppp");
                                    resposta = entrada.nextLine();
                                    if(resposta.equals("nao")){
                                        System.out.println("Mostrar lista de cidadaes?");
                                        resposta = entrada.nextLine();
                                        if(resposta.equals("sim")){
                                            System.out.println("Lista de cidadaes " + lista.toString());    
                                            break;
                                        }else{System.out.println("Decidiu nao ver a lista de cidadaes!");
                                        break;

                                        }

                                    }else{

                                        while(!resposta.equals("sim")||!resposta.equals("nao")){
                                            System.out.println("Comando nao reconhecido!");}


                                    }
                                 break;
                            default:
                                System.out.println("Insira se que criar um cidadao portugues ou alemao s.f.f");
                                System.out.println("Deseja criar um cidadao Portugues ou Alemao?");
                                 resposta = entrada.nextLine();
                                while(!resposta.equals("portugues")||!resposta.equals("alemao")){
                                    System.out.println("Insira se que criar um cidadao portugues ou alemao s.f.f");
                                    System.out.println("Deseja criar um cidadao Portugues ou Alemao?llll");
                                resposta = entrada.nextLine();


                                    do{
                                switch(resposta){

                                 case "portugues":
                                     do{
                                     Pessoas p9 = new Portugueses();
                                     lista.add(p9);
                                     System.out.println("Insira o nome de o cidadao Portugues");
                                      n3 = entrada.nextLine();
                                      p9.setNome(n3);
                                     System.out.println("Quer adicionar outro cidadao?ööööö");
                                     resposta = entrada.nextLine();
                                     if(resposta.equals("nao")){
                                            System.out.println("Mostrar lista de cidadaes?");
                                            resposta = entrada.nextLine();
                                            if(resposta.equals("sim")){
                                                System.out.println("Lista de cidadaes " + lista.toString());
                                                break;
                                            }else{System.out.println("Decidiu nao ver a lista de cidadaes!");
                                            break;
                                            }

                                        }else{

                                            while(!resposta.equals("sim")||!resposta.equals("nao")){
                                                System.out.println("Comando nao reconhecido!");
                                         break;}}
                                     while(resposta.equals("sim")){
                                     System.out.println("Deseja criar um cidadao Portugues ou Alemao?");
                                        resposta = entrada.nextLine();
                                         switch(resposta){
                                         case "portugues":
                                             Pessoas p10 = new Portugueses();
                                             lista.add(p10);
                                             System.out.println("Insira o nome de o cidadao Portugues");
                                              n3 = entrada.nextLine();
                                              p10.setNome(n3);
                                             System.out.println("Quer adicionar outro cidadao?lllll");
                                                resposta = entrada.nextLine();
                                                if(resposta.equals("nao")){
                                                System.out.println("Mostrar lista de cidadaes?");
                                                resposta = entrada.nextLine();
                                                if(resposta.equals("sim")){
                                                    System.out.println("Lista de cidadaes " + lista.toString());
                                                    break;
                                                }else{System.out.println("Decidiu nao ver a lista de cidadaes!");
                                                break;
                                                }

                                            }else{

                                                while(!resposta.equals("sim")||!resposta.equals("nao")){
                                                    System.out.println("Comando nao reconhecido!");
                                             break;}}
                                         case"alemao":
                                             Pessoas p11 = new Alemaes();
                                             lista.add(p11);
                                             System.out.println("Insira o nome de o cidadao Alemao");
                                              n4 = entrada.nextLine();
                                              p11.setNome(n4);
                                             System.out.println("Quer adicionar outro cidadao?");
                                                resposta = entrada.nextLine();
                                                if(resposta.equals("nao")){
                                                    System.out.println("Mostrar lista de cidadaes?");
                                                    resposta = entrada.nextLine();
                                                    if(resposta.equals("sim")){
                                                        System.out.println("Lista de cidadaes " + lista.toString());
                                                        break;
                                                    }else{System.out.println("Decidiu nao ver a lista de cidadaes!");
                                                    break;
                                                    }

                                                }else{

                                                    while(!resposta.equals("sim")||!resposta.equals("nao")){
                                                        System.out.println("Comando nao reconhecido!");
                                                 break;}}
                                             break;}}
                                     }while(resposta.equals("sim"));
                                     break;
                                 case"alemao":
                                     do{
                                     Pessoas p8 = new Alemaes();
                                     lista.add(p8);
                                     System.out.println("Insira o nome de o cidadao Alemao");
                                      n4 = entrada.nextLine();
                                      p8.setNome(n4);
                                     System.out.println("Quer adicionar outro cidadao?");
                                        resposta = entrada.nextLine();
                                        while(resposta.equals("sim")){
                                             System.out.println("Deseja criar um cidadao Portugues ou Alemao?");
                                                resposta = entrada.nextLine();
                                                 switch(resposta){
                                                 case "portugues":
                                                     Pessoas p10 = new Portugueses();
                                                     lista.add(p10);
                                                     System.out.println("Insira o nome de o cidadao Portugues");
                                                      n3 = entrada.nextLine();
                                                      p10.setNome(n3);
                                                     System.out.println("Quer adicionar outro cidadao?");
                                                        resposta = entrada.nextLine();
                                                     break;
                                                 case"alemao":
                                                     Pessoas p11 = new Alemaes();
                                                     lista.add(p11);
                                                     System.out.println("Insira o nome de o cidadao Alemao");
                                                      n4 = entrada.nextLine();
                                                      p11.setNome(n4);
                                                     System.out.println("Quer adicionar outro cidadao?");
                                                        resposta = entrada.nextLine();
                                                     break;}}
                                     }while(resposta.equals("sim"));
                                     break;}}while(resposta.equals("sim"));

                                }}}while(resposta.equals("sim"));

                 }
            }

                      if(resposta.equals("nao")){
                        System.out.println("Mostrar lista de cidadaes?");
                        resposta = entrada.nextLine();
                        if(resposta.equals("sim")){
                            System.out.println("Lista de cidadaes " + lista.toString());    
                        }else{System.out.println("Decidiu nao ver a lista de cidadaes!");
                        }

                    }else{

                        while(!resposta.equals("sim")||!resposta.equals("nao")){
                            System.out.println("Comando nao reconhecido!");
                            System.out.println("Quer adicionar outro cidadao?");

                         resposta = entrada.nextLine();
                        while(resposta.equals("sim")){
                            System.out.println("Deseja criar um cidadao Portugues ou Alemao?");
                            String resposta3 = entrada.nextLine();
                             switch(resposta3){
                             case "portugues":
                                 Pessoas p3 = new Portugueses();
                                 lista.add(p3);
                                 System.out.println("Insira o nome de o cidadao Portugues");
                                  String n3 = entrada.nextLine();
                                  p3.setNome(n3);
                                 System.out.println("Quer adicionar outro cidadao?");
                                    resposta = entrada.nextLine();
                                 break;
                             case"alemao":
                                 Pessoas p4 = new Alemaes();
                                 lista.add(p4);
                                 System.out.println("Insira o nome de o cidadao Alemao");
                                  String n4 = entrada.nextLine();
                                  p4.setNome(n4);
                                 System.out.println("Quer adicionar outro cidadao?");
                                    resposta = entrada.nextLine();
                                 break;
                            default:
                                System.out.println("Insira se que criar um cidadao portugues ou alemao s.f.f");
                             }
                        }if(resposta.equals("nao")){
                            System.out.println("Mostrar lista de cidadaes?");
                            resposta = entrada.nextLine();
                            if(resposta.equals("sim")){
                                System.out.println("Lista de cidadaes " + lista.toString());
                                break;
                            }else if(resposta.equals("nao")){System.out.println("Decidiu nao ver a lista de cidadaes!");
                            break;
                            }else{
                                while(!resposta.equals("sim")|| !resposta.equals("nao")){
                                    System.out.println("Comando nao reconhecido,Mostrar lista de cidadaes?Sim ou Nao?");
                                    resposta = entrada.nextLine();
                                if(resposta.equals("nao")){
                                    System.out.println("Mostrar lista de cidadaes?");
                                    resposta = entrada.nextLine();
                                    if(resposta.equals("sim")){
                                        System.out.println("Lista de cidadaes " + lista.toString());
                                        break;
                                    }else if(resposta.equals("nao")){System.out.println("Decidiu nao ver a lista de cidadaes!");
                                    break;
                                    }
                                }
                            }
                        }
                    }
               }
          }
      }
  }

1 个答案:

答案 0 :(得分:1)

首先正确缩进代码,然后继续进行重构。某些IDE具有自动缩进功能(例如Eclipse中的Ctrl-Shift-F)

使其更具可读性的简单方法是将每个casedefault处理程序分解为自己的方法。尝试让每个方法执行一个特定的任务 - 程序的逻辑将更容易理解。