gpt4 book ai didi

default - switch 语句是否应该始终包含 default 子句?

转载 作者:行者123 更新时间:2023-12-03 04:07:11 29 4
gpt4 key购买 nike

在我的第一次代码审查(不久前)中,我被告知在所有 switch 语句中包含默认子句是一种很好的做法。我最近想起了这个建议,但不记得其理由是什么。现在对我来说听起来很奇怪。

  1. 始终包含默认语句是否有合理的理由?

  2. 这种语言依赖吗?我不记得当时使用的是什么语言 - 也许这适用于某些语言而不适用于其他语言?

最佳答案

切换大小写应该几乎始终有一个默认大小写。

使用默认的原因

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 外部声明但未初始化,并且每种情况将其初始化为不同的值时,您也可能会看到这种情况。这里默认值也需要初始化它,以便访问该变量的行代码不会引发错误。

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 以外的值。

<小时/>

我能想到不使用default的唯一情况是当交换机正在检查某些东西时,其相当明显的其他替代方案可以愉快地忽略

switch(keystroke)
{
case 'w':
// move up
case 'a':
// move left
case 's':
// move down
case 'd':
// move right
// no default really required here
}

关于default - switch 语句是否应该始终包含 default 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4649423/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com