<Thinking in java> swich(..) {....} 中的一些代码如果默认意味着什么都不做,为什么要设置默认值?
some code in<Thinking in java> swich(..) {....} why set default if default mean to do nothing?
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".
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".