다소 긴 switch-case 문이 있습니다. 이 중 일부는 매우 짧고 사소합니다. 약간은 다음과 같이 이상하고 다른 곳에서는 사용되지 않는 몇 가지 변수가 필요합니다switch 구문의 경우 로컬 블록에 변수를 정의하는 것이 좋은 생각입니까?
int specialVariable = 5;
switch (action) {
case kSimpleAction:
// Do something simple
break;
case kComplexAction:
// Do something complex with specialVariable
break;
}
이 수 :
switch (action) {
case kSimpleAction:
// Do something simple
break;
case kComplexAction: {
int specialVariable = 5;
// Do something complex with specialVariable
} break;
}
이 대안이 같은 switch
에 가기 전에 그 변수를 선언하는 것 변수가 속해 있고 불필요한 메모리를 사용하고있는 것이 확실하지 않으므로 다소 혼란스러워집니다.
그러나이 사용법은 다른 어느 곳에서도 본 적이 없습니다.
단일 블록 case
에 대해 변수를 블록에 로컬로 선언하는 것이 좋습니다.
각각의 경우 범위입니까? 나는 그 사건 자체가 스위치없이 의미가 없기 때문에 묻는다. – gbn
@gbn - 자체적으로'case'는 새로운 범위를 만들지 않습니다.이 코드는 새로운 범위를 도입하기 위해'{}'을 추가해야합니다 (OP가 그의 첫 번째 예에서와 같이). –
예, 케이스 (말장난)에서 변수를 사용하려는 경우 "범위"를 만들어야합니다.이 경우 변수는이 경우에만 사용됩니다. – Max