当前位置: 首页 > 知识库问答 >
问题:

仅仅为了可读性而创建常量变量可以吗?[闭门]

宋铭
2023-03-14

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

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)
    (...)

我不知道,我刚买了鲍勃叔叔的《清洁守则》,我开始质疑自己。

共有2个答案

傅鸿波
2023-03-14

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

当您必须多次使用国际和国家标准时,这是正确的

锺离烈
2023-03-14

我相信常数比魔法数字更好
使用常量,您可以在一个位置控制定义并更好地命名。这将影响代码的进一步可维护性
并在某些情况下尝试使用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:
        }
    }


检查更多:为什么使用ENums而不是常量?在软件设计和可读性方面哪个更好

 类似资料:
  • 问题内容: 我们如何在对象创建时初始化类的最终变量? 任何人都可以解释它怎么可能?… 问题答案: 您必须一次且仅一次初始化最终变量。有三种方法可以对实例变量执行此操作: 在构造函数中 在实例初始化块中。 当你声明它 这是这三个示例: 在每种情况下,代码在您调用时都运行一次,并且无法再次调用其中的任何一个,这满足了初始化要求每个实例仅执行一次的要求。

  • 我正在尝试将几个邮递员请求串在一起进行测试。 > 在第一个请求中,我将全局变量设置为测试脚本。 在第二个请求中,我运行请求前脚本 然后我尝试将其传递到标头中 在运行程序中运行测试时,是否可以将值传递到头中? 当在Runner中运行测试时,第二个请求失败,因为有一个无效的<code>jwt</code>,Postman文档只显示了将变量传递到URL的示例。

  • 我最近一直在尝试重新熟悉多线程,并找到了这篇论文。其中一个例子说在使用类似这样的代码时要小心: 声明: 是作者写错了,还是我漏掉了什么?

  • 问题内容: 我的操作系统是Windows7。我想在我的Java应用程序中读取环境变量。我已经搜索过google,很多人的答案是使用方法 或 。但这似乎不起作用。通过该方法,我可以读取JVM中定义的某些变量的值。 如果我设置一个名为“ Config”的环境变量,其值为“一些配置信息”,那么如何在Java中获取该值? 问题答案: 您应该使用System.getenv(),例如: 从IDE运行时,您可以

  • 我是一个新手程序员,非常新手… 我试图写一个程序来测试我们的网站,并正在使用Java和Selenium。 问题是我想创建一个“表”或“引用”,允许我存储变量,这些变量可以很容易地被回调并在不同的调用中使用。 我尝试使用HashMap但发现它不好,因为当我重新运行测试代码时,每次都有一个新的HashMap。我想要一些东西,可以存储值,并记住他们,当我下一次运行代码。 我研究了如何创建一个mysql表

  • 本文向大家介绍用Java创建对象时可以初始化最终变量吗?,包括了用Java创建对象时可以初始化最终变量吗?的使用技巧和注意事项,需要的朋友参考一下 声明变量final后,在对其进行初始化之后,将无法进一步修改其值。此外,像实例变量一样,最终变量将不会使用默认值初始化。 因此,在声明最终变量后必须初始化它们。如果不是,则会生成编译时错误。 示例 编译时错误 初始化最终变量 您可以通过4种方式初始化最