programing

C 모든 케이스 뒤에 있는 스위치 대소문자의 중괄호

sourcetip 2022. 10. 29. 16:42
반응형

C 모든 케이스 뒤에 있는 스위치 대소문자의 중괄호

C에서switch-case흐름 제어. 다음 중괄호 { }을(를) 넣어야 합니다.case해당 블록에 변수가 정의되어 있는지 확인합니다.

매번 곱슬곱슬한 교정기를 끼우는 것은 나쁜 습관인가요?case변수 선언에 관계없이?

예를 들어 다음과 같습니다.

switch(i) {
  case 1: {
    int j = 4;
    ...code...
  } break;

  case 2: {  //No variable being declared! Brace OK?
    ...code...
  } break;
}

모든 케이스 블록에서 교정기를 사용하는 것은 물론 나쁜 스타일도 아닙니다.변수 선언으로 인해 중괄호가 있는 일부 케이스 블록이 있는 경우 다른 것에 중괄호를 추가하면 코딩 스타일이 보다 일관되게 될 수 있습니다.

즉, 케이스 블록 내에 변수를 직선 C로 선언하는 것은 좋지 않을 수 있습니다.컴파일러에 의해 허용될 수도 있지만 보다 깨끗한 솔루션이 있을 수 있습니다.서로 배타적인 케이스 블록은 몇 가지 일반적인 일시 변수를 공유할 수 있습니다.또는 케이스 블록이 도우미 기능으로 더 잘 기능하는 것을 알 수 있습니다.

컴파일러가 코드를 최적화하는 방법 때문에 속도 위반 없이 모든 케이스 스테이트먼트에서 중괄호를 사용할 수 있습니다.코더의 스타일과 취향입니다.

  • 가장 선호되는 사용법은 브레이스를 사용하지 않는 것입니다.단, 액티브한 개발 중 모든 케이스에서 브레이스를 사용하는 것은 때때로 코드에 추가하기가 더 쉬울 수 있습니다.

  • 이것은 단지 동양미학일 뿐입니다.왜냐하면 '케이스' 스테이트먼트는 하나의 명령어만 필요로 하는 것이 아니라 라벨로서 기능하는 코드를 통과시키기 때문입니다.따라서 블록은 필요하지 않으며 유효하지 않습니다.

  • 변수 포함의 경우, 대괄호는 변수의 컨텍스트를 작성하기 위해 사용할 때 사용합니다.대괄호를 사용하는 것은 매우 의미가 있습니다.플랫폼에 따라 컴파일러가 다를 수 있습니다.컴파일러가 포함되어 있지 않은 컴파일러의 동작은 다릅니다.

일반적으로 변수 초기화를 건너뛰는 것은 잘못된 관행입니다.goto또는switch이것은 블록이 없는 경우에 발생하는 현상입니다.case.

C99에서는 초기화를 뛰어넘는 것, 즉 가변 길이 배열이 불법인 경우도 있습니다.C++의 비POD와 유사하게 구성되어야 하며, 나중에 변수에 액세스하기 위해 초기화가 필요합니다.따라서 이 경우 block 문을 사용해야 합니다.

교정기를 각각 사용하는 것은 좋지 않은 스타일이라고 생각한다.case, C의 과 유사합니다.goto그리고 에서는 각각의 C언어롭게 선언할 수 .case(또는 마음에 드는 곳) 새로운 블록을 도입하지 않아도 되지만, 일부 사람들(예외 포함)은 그 스타일을 나쁘게 생각한다.

작은 포인트를 추가하는 것만으로, 많은 에디터나 IDE를 사용하면, 블록의 접힘이나 자동 들여쓰기를 할 수 있습니다.또, 복수의 에디터나 IDE를 사용하면, 일치하는 브레이스로 점프할 수 있습니다.개인적으로는, 브레이크에서 매칭 케이스 스테이트먼트로 점프할 수 있는 것은 모릅니다.

다른 사용자(또는 몇 개월 후 사용자 자신의 사용자)를 디버깅하거나 팩터링할 때 코드의 섹션을 축소하거나 일치하는 대소문자로 점프할 수 있는 복잡한 대소문자를 포함하는 코드는 특히 코드에 들여쓰기 변형이 포함되어 있는 경우 매우 중요합니다.

그것은 전염병과 같은 복잡한 사례 진술을 피하는 것이 거의 항상 좋은 조언이라고 말했다.

언급URL : https://stackoverflow.com/questions/4241545/c-switch-case-curly-braces-after-every-case

반응형