2013-06-28 6 views
7

오픈 소스였던 것을 발견 한 후 CFArray 코드를보고 있었는데 이상한 코드를 발견했습니다. 이 "빈"if (0) 조건의 요점은 무엇입니까? 미친 이익이 있습니까 아니면 이것만으로 뭔가 남았습니까? 이 코드는 line 957 of CFArray.c in GitHub에 있습니다.이러한 (0) 조건의 핵심은 무엇입니까?

if (0) { 

} 
else if (NULL == array->_store) { 
    if (0) { 

    } 
    else if (0 <= futureCnt) { 
      // blah blah 
    } 
} 
+2

"이 코드를 실행하지 마십시오"라고 생각됩니다. –

+0

그건 내가 들여 쓰기 때문에 처음에 생각한 것이지만 실제로는 if (0) {} else if (validStuff) {}입니다. – user988375

+0

은 코드 디버깅에서 남은 것일 수 있습니다. 그러나 나는 단지 추측 할 수 있습니다 ... – katzenhut

답변

7

그들은 다년간의 역사를 통해 플랫폼에서 플랫폼으로의 많은 마이그레이션 중 하나 인 것으로 보입니다. 그리고 일반적으로 A 형식에서 B 형식으로 코드를 자동으로 올바르게 마이그레이션하는 도구를 사용하는 경우 오류가 발생할 위험이 너무 많으므로 사실 이후에는 수동으로 처리하지 않으려 고합니다.

NeXTSTEP에서 OpenStep으로 이전 할 때 API에서 API 로의 변환을 자동화하는 데 사용되는 TOPS라는 변환 기술이있었습니다. 두 번째 변형은 WebObjects 시절에 Objective-C에서 Java로 마이그레이션하기 위해 만들어졌습니다.

사실상 API와 언어를 변형시키는 자동화 된 리팩토링 엔진이었습니다.

위쪽은 매우 강력하고 쉽게 확장 될 수있었습니다. 제 3 자 커뮤니티 및 Apple/NeXT 내부에서 다양한 버전의 마이그레이션 (버전, API, 스타일 등)을 수행하는 데 아주 효과적으로 사용되었습니다.

(개인적으로 지난 75,000 회선 NeXTSTEP 3.3 Objective-C++ 응용 프로그램을 Mac OS X 10.2로 이전하기 위해 TOPS를 마지막으로 사용한 시간은 3.3 ~ 4.2, 4.2 -> PR1, PR1 -> 10.2 꽤 많은 도전 이었지만 많은 재미가있었습니다. 여기에 좀 더 배경이 있습니다 : http://www.cocoabuilder.com/archive/cocoa/221418-porting-from-windows-to-mac.html.)

1

가능성, 그는 unreachable code 경고/오류를 침해하지 않고 코드 경로를 생략하기 위해 수행되었다.