<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".