java - <Thinking in java> swich(..) {....} 中的一些代码如果默认意味着什么都不做,为什么要设置默认值?

标签 java switch-statement

                switch (Category.categorize(input)) {
            case MONEY:
                amount += input.amount();
                state = ADDING_MONEY;
                break;
            case SHUT_DOWN:
                state = TERMINAL;
                // why ???
            default:
            }

这些代码来自,我的问题是: 为什么要设置默认值,这是胡说八道??我认为这样编码很好:

                    switch (Category.categorize(input)) {
            case MONEY:
                amount += input.amount();
                state = ADDING_MONEY;
                break;
            case SHUT_DOWN:
                state = TERMINAL;
                // why ???
            }

最佳答案

这不是必需的,它是一种风格。 In the Google Java style guide它说:

4.8.4.3 The default case is present

Each switch statement includes a default statement group, even if it contains no code.

如果您添加了一个未在开关中处理的不同案例,那么最好有一个默认值来做某事,无论是抛出异常,进行日志记录还是其他任何事情,以通知某人有一个没有处理的案件。使用默认标签可以更明显地看出需要放置一些类似这样的代码。

可能是 Bruce Eckel 决定让他的代码符合 Google 风格指南,并因此添加了它。遵循商定的约定可能是一件好事,即使您不同意所有约定,有一种说法认为 "form is liberating" .

关于java - <Thinking in java> swich(..) {....} 中的一些代码如果默认意味着什么都不做,为什么要设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29989868/

相关文章:

java - 我将如何比较两个将转换为相同字符的字符?

c++ - Switch 语句 C++ 的问题

java - 歌曲图像可以更快吗?

java - 使用 Java 或 iText 生成两个完全相同的 PDF

javascript - 在 switch 上更改 if/else

java - 开关未按预期工作

c# - 如何避免 300 个案例的开关阻塞?

java - 如何运行 headless Selenium 脚本,主机和浏览器独立

java - 为什么 InterruptedException 是检查异常?

java - 如果页面已经加载,如何使 viewpager 不再加载页面