2010-07-06 4 views
1

오늘 (누군가에게 차이가 나는 경우) 일부 코드 (C)를 읽었으며 스위치 블록에 대해 궁금해졌습니다.이전 줄 결과가 출구인데도 불구하고 break 문 사용

switch (c_type) { 
case -1: 
    some_function(some_var); 
    break; 
[...] 
default: 
    abort(); 
} 

이제는 매우 간단한 스위치 블록입니다. 그것은 some_function(some_var) -call입니다. 궁금한 점이 있습니다 : 프로그래머가 절대적으로 긍정적으로 훌륭한 호출을하면 프로세스가 종료 될 것이라는 확신이들 것입니다. 완전히 불필요한 경우에도 여전히 break-statement를 사용합니까? ? 그것이 최선의 관행이라고 말할 수 있습니까?

+0

http://stackoverflow.com/questions/3065438/switch-statement-with-returns-code-correctness/의 거의 정확한 중복 : 너무 거의 같은 대답으로 패배 3065451 # 3065451 – DRL

+0

죄송합니다! 내 잘못이야. 그리고 저는 사전에 답을 찾아 보았습니다. – manneorama

답변

8

필자는 함수 호출 아래에 폭탄을 가지고있을 것이라고 말하고 싶습니다. assert() 이것은 이중 목적을 제공합니다 : 런타임에서이 지점에 도달 할 수 없다는 사실을 문서화하고 코드가 어떻게 든 이 그 지점에 도달하면 오류 메시지를 생성합니다.

+0

나는 Mark와 똑같이 말하려고 했었지만, 실제로 이것은 훨씬 더 좋은 반응이다. –

+0

정말 좋은 제안입니다! – manneorama

2

휴식을 남겨주세요. 어떤 사람이 에 대해 확실한지는 중요하지 않습니다. 다른 사람이 읽을 수 있도록 프로그램을 작성하면 휴식을 통해 주어진 사례가 다음 사례와 완전히 별개임을 명확히 알 수 있습니다.

오늘 코드에 대해 절대적으로 확신 할 수 있지만 사양은 내일 변경 될 수 있으며 some_function은 더 이상 종료되지 않습니다. 사양의 어떤 것도 확실하지 않습니다 (어쨌든 제 경험에서).

+0

소원 나는 "다른 인간"부분을 위해 +4를 줄 수 있었다. –

0

모든 사례 명세서를 끝내고 휴식이나 반품을하는 것이 가장 좋습니다.

2

호출이 프로세스가 종료되는 결과를 낼 수 있을지 잘 모르겠다면, 그에 대한 단언을 해야겠다.

그런 식으로 누군가가 함수를 수정하고 항상 종료되지는 않는다면 버그는 처음 발생할 때 거의 잡힐 것입니다.

편집 :/