사건을 해결하고 반환합니다.및 기본값의 경우
OCD는 사례 진술을 작성할 때 실행되지 않더라도 "브레이크"를 추가하도록 합니다.다음 코드 예제를 생각해 보십시오.
switch(option) {
case 1:
a = 1;
b = 7;
break;
case 2:
a = 2;
b = 4;
return (-1);
break;
default:
a = -1;
break;
}
의 두 다음과 같습니다.
" 2의 경우, 저는 이 별로 요?"케이스 2:"의 경우, 저는 휴식이 별로 필요하지 않지만, 어쨌든 그곳에 있는 것이 좋은 생각인가요?"default:"의 순전히 강박장애인가요, 아니면 여기서 휴식을 취해야 할 진짜 이유가 있나요?
여러분은 두 가지 휴식이 필요하지 않지만, 그것들을 가져도 해롭지 않습니다.제 생각에는 코드를 체계적으로 유지하는 것은 몇 가지 외부적인 진술을 할 가치가 있습니다.
저는 최종 디폴트 사례에서 휴식을 갖는 것에 동의하며, 반품 후 휴식은 동의하지 않습니다.(동료가 그렇게 해서 눈이 아파요.)
또한 들여쓰기 수준의 확산을 줄이기 위해 스위치를 들여씁니다.:) 즉:
switch(option) {
case 1:
a = 1;
b = 7;
break;
case 2:
a = 2;
b = 4;
return -1;
default:
a = -1;
break;
}
(또한 리턴스테이트먼트는 함수가 아니기 때문에, 그것을 하나처럼 보이게 하는 불필요한 스타일을 강요하는 것은 적절하지 않다고 생각합니다.)
기본 사례 이후의 휴식은 개인적인 선호도의 문제일 뿐입니다.
복귀 후 휴식을 취하는 것은 저에게 거의 모순적으로 보입니다.저는 단지 반품 명세서를 정말 돋보이게 하기 위해 브레이크를 제거할 것입니다.
복귀 후 휴식 시간은 잘못된 형식이라고 생각합니다. 일부 컴파일러에서 도달할 수 없는 코드에 대한 경고가 표시됩니다.
기본 사례에 대한 구분은 완전히 적절하며, 사례 분석은 도구이므로 특히 사용 시 표시해야 합니다.
저는 기본값을 포함하여 각 경우에 항상 휴식을 취하고 모든 내부 스위치에서 반환을 피하는 것을 선호합니다.2-3개의 케이스(기본값 포함)만 있는 짧은 스위치의 경우 반품은 가능하지만 모든 케이스가 동일한 방식으로 진행되는 경우에만 가능합니다.'break' break 나는 무의미하고 읽기에 더 많은 코드를 만들 뿐입니다.완전히 무의미한 빈 기본값도 마찬가지입니다.제 생각에 코드를 읽는 것의 용이성은 누군가가 이것을 바꾸거나 저것을 바꾼다면 어떻게 되는 것보다 더 중요합니다.
어떤 휴식도 당신에게 아무런 도움이 되지 않지만, 해롭지도 않습니다.
개인적으로, 저는 리턴이 있으면 보통 그것들을 생략하지만, 가능하면 함수에 리턴 포인트가 여러 개 있는 것을 피하려고 노력합니다.
저는 하만지그, ▁break의 중단이 있다고 합니다.default:
사례다좋니 - 가이유로지: 뒤에 했다면, 휴식을 ", 그 입니다.만약 당신이 그것을 생략하고 누군가가 기본값 뒤에 새로운 사례를 추가했다면, 그들이 휴식 시간에 추가하는 것을 "잊어버린"다면, 그 행동은 달라질 것입니다.
다른 사람들이 지적했듯이, 복귀 후 또는 디폴트의 경우에 휴식을 두는 것은 대부분 개인적인 스타일의 문제입니다.
특정 스타일 규칙을 따를 필요가 없을 때는 다음과 같은 것을 선호합니다.
스위치(foo){대/소문자 0:baz = 1;브레이크;사례 1:막대 % = 2;반환 -1;연결 안 됨 */사례 2:막대 = -1;반환 -2;연결 안 됨 */브레이크;기본값:브레이크;}
사례 1과 사례 2 중에서 저는 2를 선호하는 경향이 있습니다.댓글에 NOTREACHED라고 표시되어 있어도 코드가 변경될 때 댓글이 (물론 의도치 않게) 거짓말을 할 수 있습니다.NOTREACHED 코멘트는 당신이 무엇을 하고 있는지 알고 있다는 것을 만족시킬 수 있고 기능을 일찍 종료한다는 것을 알려주는 역할을 하기 때문에 좋습니다.반품이 삭제될 경우 반품 후 휴식을 취하는 것이 오류를 완화시킬 것이라는 추론은 저에게 결함이 있는 것으로 보입니다.다음 사례로 넘어가거나 스위치를 종료하고 이전과 같이 계속 진행해도 여전히 잘못된 동작을 하게 될 것입니다.
물론 피할 수 있다면 스위치 본체 내의 기능에서 복귀하지 않을 것입니다.
C, C++, Java 및 C#에서 이러한 "브레이크"를 넣지 않으면 변수가 "케이스"에 값을 할당하지 않아도 프로그램 코드 흐름이 다른 "케이스"에 포함되어 그 안에서 명령을 실행할 것이라고 들었습니다.
다른 사람들이 나중에 누군가 방문하여 사례를 추가할 경우 기본 사례에 중단을 남겨두라고 언급한 것과 관련하여:제가 근무하는 곳에서는 코딩 표준에 항상 기본값을 마지막 경우로 두라고 되어 있기 때문에, 우리의 상황에서는 해당 사례에 대한 중단은 중복될 뿐입니다. (이것은 제가 회사의 코딩 표준에 전적으로 동의하는 한 가지 경우입니다. 기본값 사례가 항상 마지막인 경우에는 항상 어디서 찾을 수 있는지 알고 있기 때문입니다.긴 스위치 스테이트먼트에서도 마찬가지입니다.
반환 후의 중단에 대해서는, 반환되지 않는 실행 경로가 없는 한 중단을 생략하는 경향이 있습니다.(이에 대한 예외는 사례에 여러 개의 실행 경로가 있고 코드를 빠르게 스캔하여 모든 경로가 반환되는지 여부를 구분할 수 없는 드문 경우입니다. 그러면 안전을 위해 브레이크인을 그대로 둡니다.)
저는 브레이크를 개인적으로 넣지는 않지만, 다른 사람이 리턴(-1)을 스위치 외부로 이동하기로 결정하고 브레이크를 추가하는 것을 잊었을 때 도움이 될 수 있습니다.
저는 당신이 다음 사건으로 넘어갈 생각이 없다는 것을 보여주기 위해 브레이크를 걸고 싶습니다.
이 정확한 예에서는 두 질문 모두 개인적인 선호도입니다.일반적으로 규칙은 다음과 같습니다. 중단이 없는 것은 모두 실패합니다.이는 (포드가 말했듯이) 마지막이 아닐 경우를 대비하여 기본 사례에 브레이크를 두는 것이 좋은 생각이라는 것을 의미합니다.이는 또한 사례에 수익이 포함된 경우 후속 중단이 실제로 필요하지 않다는 것을 의미합니다.
제가 아는 지식이 부족해서 죄송합니다만, 강박장애가 무엇인가요?
그것과는 별개로, 브라이언 커니건은 언제 사용해야 하는지에 대한 좋은 설명을 제공합니다.break
a 이내에switch
진술.
언급URL : https://stackoverflow.com/questions/957038/break-in-a-case-with-return-and-for-default
'programing' 카테고리의 다른 글
MySql - 데이터 전송 속도가 느림 (0) | 2023.07.22 |
---|---|
스프링 부트는 @WebServlet을 지원하지 않습니다. (0) | 2023.07.22 |
PHP 5.4 - 'closure $this support' (0) | 2023.07.22 |
다에서 다로 필드를 직렬화하는 장고레스트 프레임워크 (0) | 2023.07.22 |
장고에서 모든 요청 헤더를 가져오려면 어떻게 해야 합니까? (0) | 2023.07.22 |