チームメンバーが私に Java プログラムを送ってきて、それを効率化してほしいと頼んだのですが、修正後、コードのサイズが 2 倍になりました...

ポジティブなグループのメンバー

先日取材を受けたチームメンバーですが、こんなに前向きな子も珍しいので、ニュースを見てすぐに見に行きました。
ここに画像の説明を挿入します

問題点

彼は Java を学んだばかりだからかもしれません。彼のコードを見たとき、私は...

悲しいことに、私が採用したチームメンバーも涙を流しながら変更しなければなりませんでした。

ここに画像の説明を挿入します

元のコード

public class demo {
    
    
    public static void main(String[] args) {
    
    
        int money = 1000;  /*初始资金*/
        boolean go_on=false;
        while (money>0){
    
    
            Scanner input=new Scanner(System.in);
            System.out.println("请下注");
            int xiazhu= input.nextInt();
            if (xiazhu>0&&xiazhu<=money){
    
         /*判断下注正确*/
                int number1 = random();
                System.out.println(number1);
                if(number1==7||number1==11){
    
        /*玩家赢*/
                    money+=xiazhu;
                    System.out.println("玩家赢");
                    System.out.println("当前资产"+money);
                }else {
    
    
                    if(number1==2||number1==3||number1==12){
    
        /*庄家赢*/
                        money-=xiazhu;
                        System.out.println("庄家赢");
                        System.out.println("当前资产"+money);
                    }else{
    
    go_on=true;}
                }
                while (go_on){
    
              /*继续扔*/
                    int number=random();
                    System.out.println(number);
                    if(number==7){
    
            /*庄家赢*/
                        money-=xiazhu;
                        System.out.println("庄家赢");
                        System.out.println("当前资产"+money);
                        go_on=false;
                    }else {
    
    if(number==number1){
    
         /*玩家赢*/
                        money+=xiazhu;
                        System.out.println("玩家赢");
                        System.out.println("当前资产"+money);
                        go_on=false;
                    }else {
    
    }
                    }
                }
            }else{
    
    
                System.out.println("输入有误,重新输入");
            }
        }
        if (money<=0){
    
    
            System.out.println("破产了");
        }
    }
    public static int random() {
    
    /*生成一个随机双骰子*/
        Random r = new Random();
        int r1 = r.nextInt(6) + 1;  /*第一个骰子*/
        int r2 = r.nextInt(6) + 1;  /*第二个骰子*/
        int r3 = r1 + r2;
        return r3;
    }
}

変更されたコード

public class Game {
    
    
    /**
     * 随机数生成器和输入流
     */
    private Random random;
    private Scanner input;
    /**
     * 初始资金
     */
    private int money = 1000;
    /**
     * 游戏是否继续
     */
    private boolean goOn=false;

    /**
     * 用户资金默认为1000元,用户资金可以通过构造函数传入
     */
    public Game(int money) {
    
    
        this.random = new Random();
        this.input = new Scanner(System.in);
        this.money = money;
    }
    /**
     * 生成一个随机双骰子
     */
    public int getPonit() {
    
    
        //第一个骰子
        int r1 = random.nextInt(6) + 1;
        //第二个骰子
        int r2 = random.nextInt(6) + 1;
        return r1 + r2;
    }
    /**
     * 获取下注情况,如果下注错误就返回-1
     */
    private int getBet() {
    
    
        System.out.print("请下注:");
        int bet = input.nextInt();
        if (bet <= 0){
    
    
            // 输入错误
            return -1;
        } else if (bet>0 && bet<=money){
    
    
            // 余额不足
            return -2;
        }
        return bet;
    }
    /**
     * 进行一局对局
     */
    private void once(int bet) {
    
    
        int number = getPonit();
        System.out.println(number);
        if(number==7 || number==11){
    
    
            money += bet;
            System.out.println("玩家赢,当前资产:"+money);
        }else {
    
    
            if(number==2||number==3||number==12){
    
    
                money -= bet;
                System.out.println("庄家赢,当前资产"+money);
            }else{
    
    
                goOn=true;
            }
        }
    }
    /**
     * 看是否继续下一局
     */
    private void checkGoOn() {
    
    
        String ans;
        while (true) {
    
    
            System.out.print("是否继续游戏,输入Y表示继续,N为退出:");
            ans = input.next();
            if (!ans.equals("Y") && !ans.equals("N")) {
    
    
                System.out.println("大无语,这都能输错?再来一遍....");
            }
            goOn = ans.equals("Y")?true:false;
        }
    }
    /**
     * 游戏开始
     */
    public void start() {
    
    
        while (money>0 && goOn){
    
    
            // 用户下注
            int bet = getBet();
            // 判断下注是否正确,正确则开始
            if (bet==-1) {
    
    
                System.out.println("输入错误...");
            } else if (bet==-2) {
    
    
                System.out.println("余额不足...");
            } else {
    
    
                once(bet);
                checkGoOn();
            }
        }
        if (money<=0) {
    
    
            System.out.println("游戏结束:玩家破产");
        } else {
    
    
            System.out.println("游戏结束:玩家退出");
        }
    }
}

class GameTest {
    
    
    public static void main(String[] args) {
    
    
        Game game = new Game(1000);
        game.start();
    }
}

研究の提案

チーム メンバーの意図は、私にロジックを単純化させようということかもしれません。これは開発の詳細です。気にしません。開発仕様が最も重要です。Java は Python ではありません。作成したプログラムが再利用可能で、簡単に作成できることを確認する必要があります。展開、明確な参照など

では、高品質のコードを記述するにはどうすればよいでしょうか? これには Java 開発仕様に準拠する必要があります。「Alibaba Java 開発マニュアル (松山版)」を読むことをお勧めします。クリックしてダウンロードしてください。

おすすめ

転載: blog.csdn.net/m0_46521785/article/details/120391616