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/