在我的第一次代码审查中(不久前),有人告诉我,在所有 switch 语句中包含一个默认子句是一种很好的做法。我最近记得这个建议,但不记得理由是什么。现在对我来说听起来很奇怪。
总是包含默认语句是否有合理的理由?
这种语言依赖吗?我不记得我当时使用的是什么语言 - 也许这适用于某些语言而不适用于其他语言?
Switch case 应该 几乎 总是有一个defaultcase。
default
使用 a 的原因default
1.“捕捉”一个意想不到的价值
switch(type) { case 1: //something case 2: //something else default: // unknown type! based on the language, // there should probably be some error-handling // here, maybe an exception }
2. 处理“默认”动作,其中的情况是特殊行为。
您在菜单驱动程序和 bash shell 脚本中经常看到这种情况。当变量在 switch-case 之外声明但未初始化时,您也可能会看到这种情况,并且每个 case 都将其初始化为不同的东西。这里的默认值也需要初始化它,以便访问变量的行代码不会引发错误。
3. 向阅读您的代码的人展示您已涵盖该案例。
variable = (variable == "value") ? 1 : 2; switch(variable) { case 1: // something case 2: // something else default: // will NOT execute because of the line preceding the switch. }
这是一个过于简单的例子,但重点是阅读代码的人不应该想知道为什么variable不能是 1 或 2 以外的东西。
variable
我能想到的唯一不使用default的情况是 ,当开关正在检查一些相当明显的东西时,所有其他替代方案都可以被愉快地忽略
switch(keystroke) { case 'w': // move up case 'a': // move left case 's': // move down case 'd': // move right // no default really required here }