为了可读性而创建常量变量可以吗?

Is it okay to create constant variables just for the sake of readability?

想象一下,如果我有这段代码:

System.out.println("Is the product:\n"+
                    "1. National.\n"+
                    "2. International.");
int choice = input.nextInt(System.in);
if (choice == 1)
    (...)
else if (choice == 2)
    (...)

那么可以做以下事情吗?

final int NATIONAL = 1;
final int INTERNATIONAL = 2;
System.out.println("Is the product:\n"+
                        "1. National.\n"+
                        "2. International.");
int choice = input.nextInt(System.in);
if (choice == NATIONAL)
    (...)
else if (choice == INTERNATIONAL)
    (...)

我不知道,我刚买了 Uncle Bob 的 Clean Code 这本书,我开始质疑自己。

我认为常数比 magic 数字更好。
使用常量,您可以在一个地方控制定义并更好地命名。它将影响您对代码的进一步可维护性。
并在某些情况下尝试使用 enum 而不是常量。 Enum 优点多于常量。
在这种情况下,枚举示例类似于以下代码:

enum UserInput {
    NATIONAL(1), INTERNATIONAL(2), UNKNOWN(-1);

    private int input;

    public int getInput() {
        return input;
    }

    UserInput(int i) {
        this.input = i;
    }

    public static UserInput getUserInput(int input) {
        for (UserInput userInput: UserInput.values()) {
            if (userInput.getInput() == input) {
                return userInput;
            }
        }
        return UNKNOWN;
    }
}

//main
public static void main(String[] args) {
        System.out.println("Is the product:\n"+
                "1. National.\n"+
                "2. International.");
        Scanner sc = new Scanner(System.in);
        int choice = sc.nextInt();
        switch (UserInput.getUserInput(choice)) {
            case NATIONAL: break;
            case INTERNATIONAL: break;
            default:
        }
    }


检查更多:Why use Enums instead of Constants? Which is better in terms of software design and readability

当你想要一些变量(常量)或代码倍数时,你可以创建常量以获得更好的可读性和理解性。 例如 -: 如果(选择==国家) (...) 否则如果(选择==国际) (...)

当你必须多次使用 INTERNATIONAL 和 NATIONAL 时是正确的