我正在阅读一些代码(C,如果它对任何人有所影响),并且对切换块感到好奇。
switch (c_type) {
case -1:
some_function(some_var);
break;
[...]
default:
abort();
}
现在,这是一个非常简单的开关块。这是some_function(some_var)
- 我很好奇的电话:如果你,程序员,绝对的,积极的,超级的,确保调用会导致进程退出,你是否仍然把断言声明放在下面这是完全没必要的?你会说这是最好的做法吗?
答案 0 :(得分:8)
我认为最好的做法是在函数调用下方弹出assert()
。这有两个目的:它记录了运行时中的这一点应该无法访问的事实,如果代码以某种方式 到达那个位置,它会产生错误消息。
答案 1 :(得分:2)
在那里休息。 你确定的是什么并不重要:你为其他人编写你的程序来阅读,并且中断表明给定的案例与后面的案例是完全分开的。
即使您今天对此代码非常肯定,规范明天也可能会发生变化,some_function
将不再退出。规格中没有任何东西是确定的(根据我的经验)。
答案 2 :(得分:2)
如果我是超级 - 超级 - 确定调用会导致进程退出,我会为此坚持一个断言。
这样一来,如果有人修改了这个函数并且它并不总是终止,那么这个bug几乎会在它第一次出现时被捕获。
编辑:殴打,也有同样的答案:/
答案 3 :(得分:0)
除非你想让它落到下一个案例陈述中,否则最好的做法是结束每个案例陈述。