在switch语句中使用"默认"情况是个好习惯吗?

Dan*_*ras 10 java pascal coding-style switch-statement


当我使用交换机时(在这种情况下是Java)我通常会在需要时使用默认情况.我的一位老师告诉我,当他以前在Pascal编程时,那个案例并不存在.他说,如果它不存在于Pascal中,它应该不是一件好事.

我的问题是:

  • 使用默认情况是错误的吗?
  • 它在内部如何运作?

提前致谢.

Cep*_*pod 17

我认为不使用它是一个坏习惯.

  • 如果您认为默认情况永远不会发生,请抛出异常以确定
    • 如果切换枚举,可能会有人添加其他值
    • 如果切换整数,则始终可能会发现意外值
  • 因为默认情况总是发生在你期望它最少的时候
  • 据我所知,Pascal中有类似的东西

编辑:

这是Pascal,只是为了证明你的老师错了

 case place of
   1: writeln('Champion');
   2: writeln('First runner-up');
   3: writeln('Second runner-up'); 
   else writeln('Work hard next time!'); 
 end;
Run Code Online (Sandbox Code Playgroud)

  • 实际上,在最初的Pascal中没有这样的东西.后来在标准化阶段(1983年左右)增加了它.可以看出,Borland使用"ELSE",Apple和I​​SO pascal使用"OTHERWISE" (3认同)

Dan*_*iel 5

使用默认情况总是一个好习惯.我甚至在打开枚举时使用它.如果枚举有3个值,我有3个case语句和一个抛出AssertionError的case语句.

这很好,因为如果枚举被扩展,则可以确保很快就会检测到与错过switch语句中的新值相关的错误.