use*_*375 7 if-statement objective-c core-foundation
我发现它是开源的,我正在查看一些CFArray代码,我发现了一些奇怪的代码.这些"空" if (0)条件有什么意义?是否有一些疯狂的好处,或者这只是遗留下来的东西?此代码位于GitHub的CFArray.c的第957行.
if (0) {
}
else if (NULL == array->_store) {
if (0) {
}
else if (0 <= futureCnt) {
// blah blah
}
}
Run Code Online (Sandbox Code Playgroud)
在很多年的历史中,它们很可能是代码库从平台到平台的众多迁移之一.而且,通常情况下,如果您有一个工具可以自动且正确地将代码从表单A迁移到表单B,那么您通常不希望在事后将其手动删除,因为引入错误的风险太大.
如果您回过头来看看从NeXTSTEP到OpenStep的过渡,那么有一种名为TOPS的转换技术可用于自动从API到API的转换.创建了第二个变体,用于在WebObjects时代从Objective-C迁移到Java.
实际上,它是一种专注于变换API和语言的自动重构引擎.
TOPS非常强大,可以轻松扩展.它已经被非常有效地用于执行各种迁移 - 版本,API,样式等 - 无论是在第三方社区还是在Apple/NeXT内部.
(就个人而言,我最后一次使用TOPS是〜2002年将一个750,000行NeXTSTEP 3.3 Objective-C++应用程序迁移到Mac OS X 10.2.需要从3.3移植 - > 4.2,4.2 - > PR1,PR1 - > 10.2.挑战,但很有趣.这里有更多的背景:http://www.cocoabuilder.com/archive/cocoa/221418-porting-from-windows-to-mac.html.)