1

我今天正在阅读一些代码(C,如果它对任何人都有影响的话)并且对开关块感到好奇。

switch (c_type) {
case -1:
    some_function(some_var);
    break;
[...]
default:
    abort();
}

现在,这是一个非常简单的开关块。这是some_function(some_var)我很好奇的-call:如果您,程序员,绝对,肯定,超级骗子确定调用将导致进程退出,即使完全没有必要,您是否仍将break-statement放在下面?你会说这是最佳实践吗?

4

4 回答 4

9

我想说最好的做法是assert()在函数调用下方进行轰炸。这有双重目的:它记录了运行时中的这个点应该是不可达的事实,并且如果代码以某种方式确实到达了那个点,它会产生一个错误消息。

于 2010-07-06T21:26:31.597 回答
3

把休息留在那里。确定什么并不重要:您编写程序供其他人阅读,并且中断清楚地表明给定案例与随后的案例完全分开。

即使您今天可以绝对确定代码,但规范可能会在明天更改并且some_function不会再退出。规格中的任何内容都不确定(无论如何根据我的经验)。

于 2010-07-06T21:26:54.157 回答
3

如果我超级超级确定调用会导致进程退出,我会为此添加一个断言。

这样,如果有人修改了函数并且它并不总是终止,那么该错误将在第一次发生时被捕获。

编辑:被殴打,答案也几乎相同:/

于 2010-07-06T21:28:22.907 回答
0

最好的做法是用 break 或 return 结束每个 case 语句,除非您希望它落到下一个。

于 2010-07-06T21:27:10.647 回答