一些着名的代码风格书籍建议尽可能将vars声称为本地代码(
https://stackoverflow.com/a/10205934/700825)
我的问题是:switch语句是否免于此规则?例如,如果所有(或大多数)情况都具有相似的结构,并且它们都使用字符串来表示相似的事情,那么在每种情况下是否应该声明该字符串?或者在切换之前?
答案 0 :(得分:2)
做到这一点?
switch(cond)
{
case 1:
{
// An inner scope...
int x;
}
break;
}
答案 1 :(得分:2)
我建议你尽可能让他们保持在当地
注意:
switch(1) {
case 1: int x = 0; // initialization
std::cout << x << '\n';
break;
default: // compilation error: jump to default: would enter the scope of 'x'
// without initializing it
std::cout << "default\n";
break;
}
请记住保护每个案件块:
switch(1) {
case 1: { int x = 0;
std::cout << x << '\n';
break;
} // scope of 'x' ends here
default: {
std::cout << "default\n"; // no error
break;
}
}
答案 2 :(得分:2)
检查是否可以在函数中封装您打算在case-break块中使用的代码。我建议只在case语句中调用函数/方法,但不要使用大型代码块。
另一种可能性是在switch-break中使用{}。 e.g:
case 1:
{
int i=0;
}
break;
应该有用。
答案 3 :(得分:0)
在性能方面没有显着差异。实际上,在案例中声明变量可能稍微好一点,而不是提前。就可读性而言,最好形成自然的变量组,即在每种情况下声明变量。
答案 4 :(得分:0)
规则陈述declare vars as local as possible
首先要记住,这只是一个非常好的建议,而不是一个实际的规则。
但除此之外,如果所有案例都具有相似的结构,并且您决定在案例之前声明单个变量,那么在这种情况下仍然尽可能是本地的。