簡體   English   中英

在這種情況下,使用多個else if語句是不好的做法嗎?

[英]Is using multiple else if statements bad practice in this instance?

我正在使用多個else ifs來使程序根據微調器中當前選擇的值來執行某些操作,但是我不禁想到這樣做的一種更簡潔的方法。 有什么建議么?

    if(spinnerinput.equals(spinnerinput2)) {
        output.setText(input.getText());
    }

    else if(spinnerinput.equals("Base 2") && spinnerinput2.equals("Base 10")) {
        String regex = "[0-1]+";

        if (input.getText().toString().matches(regex)) {
            output.setText(binaryToDecimal(input.getText().toString()));
        } else {
            Context context = getApplicationContext();
            CharSequence text = "Invalid characters for a binary number!";
            int duration = Toast.LENGTH_SHORT;

            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
        }
    }

    else if(spinnerinput.equals("Base 10") && spinnerinput2.equals("Base 2")) {
        String regex = "[0-9]+";

        if(input.getText().toString().matches(regex)) {
            output.setText(decimalToBinary(input.getText().toString()));
        } else {
            Context context = getApplicationContext();
            CharSequence text = "Invalid characters for a decimal number!";
            int duration = Toast.LENGTH_SHORT;

            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
        }
    }

您的if-else問題不多,但是您可以將代碼重構到最少。 您底部的兩個條件塊的區別僅在於CharSequence文本。 為什么不將其轉換為方法並再次使用相同的代碼?

private void yourCurrentMethod() {

    if(spinnerinput.equals(spinnerinput2)) {
        output.setText(input.getText());
    }

    else if(spinnerinput.equals("Base 2") && spinnerinput2.equals("Base 10")) {
        String regex = "[0-1]+";
        boolean isBinary = true;
        doSomething(isBinary, "Invalid characters for a binary number!");
    }

    else if(spinnerinput.equals("Base 10") && spinnerinput2.equals("Base 2")) {
        String regex = "[0-9]+";
        boolean isBinary = false;
        doSomething(isBinary, "Invalid characters for a decimal number!");
    }
}

private void doSomething(boolean isBinary, CharSequence text){
    if(input.getText().toString().matches(regex)) {
        if(isBinary){
            output.setText(binaryToDecimal(input.getText().toString()));
        } else {
            output.setText(decimalToBinary(input.getText().toString()));
        } 
    } else {
        Context context = getApplicationContext();
        int duration = Toast.LENGTH_SHORT;

        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM