2012-05-17 5 views
2

나는 break와 continue가 일반적으로 (최종선이 더 많든 적든간에) 그것이 유해한 것으로 간주되어야하는지에 대한 논의가 많이 있었다는 것을 알고있다. 명확성과 가독성을 향상 시키지만 다른 경우에는 그렇지 않습니다).정적 분석을 위해 "continue"와 "break"

새 프로젝트가 정적 분석기를 통한 실행을 포함하여 야간 빌드 계획과 함께 개발을 시작한다고 가정합니다. 약간의 가독성을 희생하고 과도한 들여 쓰기가 필요할 수도 있더라도 continuebreak의 사용을 피하기위한 (또는 강력하게 권장하지 않는) 프로젝트의 코딩 지침의 일부가되어야합니까? 나는 이것이 C 코드에 어떻게 적용되는지에 대해 가장 관심이 많다.

본질적으로 이러한 제어 연산자를 사용하면 코드의 정적 분석이 상당히 복잡해질 수 있습니다. 그렇지 않으면 휴식 또는 연속을 사용하지 않으면 잠재적 인 오류를 등록 할 수 있습니다.

덕분에 (물론 aribtrary 프로그램의 정확성을 증명하는 완전한 정적 분석이 결정 불가능한 명제가 그래서 당신이 아니라 이론적 불가능한에있는이 경험 - 손 어떠한에 대한 응답을 보관하십시오입니다) 전진!

+1

이런 종류의 질문은 stackoverflow보다는 프로그래머 (programmers.stackexchange.com) 포럼에서 더 잘 어울립니다. – aleroot

+0

내 제한된 경험으로 볼 때, 프로그래머 SE는 일반적으로 다음과 같은 상세한 기술적 대응을 제공하지 않습니다. 그래서, 그래서 내가 더 나은 옵션이 될 것이라고 생각합니다. 교차 게재가 아닌 저쪽으로 이전하는 방법이 있습니까? –

답변

2

즉각적인 반응은 breakcontinue을 피하기 위해 건너 뛸 필요가있는 코드가 전체 코드를 손상시키고 정적 분석 (또는 그 밖의 많은 기능)을 상당히 어렵게 만드는 것입니다.

정확한 코드 종류에 따라 달라집니다. 예를 들어 실제로 switch 문으로 구현하는 것이 가장 좋은 경우에는 break을 금지하면 중첩 된 if/else을 사용해야하므로 코드를 올바르게 분석하기가 훨씬 어려워지고 상황은 출력 코드에도 부정적인 영향을 줄 가능성이 매우 높습니다.

+0

중첩 된'if' /'else's는 사람이 파싱하는 데 더 많은 시간이 걸릴 수 있지만 정적 분석기의 경우 훨씬 더 간단하다고 가정합니다. –

+0

@ B.VB : 독자적인 정적 분석기를 작성했다면 일부 언어 기능을 빠뜨린 경우 조금 더 간단해질 수 있습니다. 기존 정적 분석기의 경우 실제 차이가 발생하지 않을 것입니다. 언어를 단순화하기를 원한다면 아마도 시작하기에 적당한 장소가 아닐 것입니다. –

+0

+1. 자체 정적 분석 도구를 작성하고 C++을 단순화하여 (다른) 작업을 더 쉽게하려면 왜 클래스, 함수 및 구현을 위해 더 많은 작업이 필요한 다른 모든 기능을 사용하지 않는 것이 좋습니까? 기존 도구를 사용하고 왼쪽 팔을 돕기 위해 오른쪽 팔을 자르지 마십시오. –