Xcode 中 Objective-C 代码的样式哪种更标准的对比分析
太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)
本文遵循“署名-非商业用途-保持一致”创作公用协议
Xcode 中 Objective-C 代码的样式在不断升级过程中,示例代码中留下如下两种,这可能是主导人的风格不同导致,甚至项目模板都在变,但具体哪种更标准呢,我们分的一下,这涉及到阅读代码在开发小组中的统一性,以及代码格式化的应用效果。
风格1:
if (1>2) { NSLog(@"true"); } else { NSLog(@"false"); }
if (1>2) { NSLog(@"true"); } else { NSLog(@"false"); }
以上两种的根本差别,就在于代码块的起始大括号是单起一行,还是与所属指令在同一行,类和方法的创建时,也涉及到此问题。
那么我们利用XCode自带的Re-Indent代码格式化功能来格式化一下,就能看出真伪了,请往下看:
分别选中上面的两种风格的代码,点右键,找到Structure->Re-Indent,点按Re-Indent后,以上代码将发生变化,即使不对齐,也会成如下的格式化后的效果
风格1格式化后:
if (1>2) { NSLog(@"true"); } else { NSLog(@"false"); }
风格2格式化后:
if (1>2) { NSLog(@"true"); } else { NSLog(@"false"); }
由此可见,风格2是XCode内置代码格式化功能所支持的,真不知为什么有些XCode版本的模板居然也用风格1,而没有考虑XCode内置功能要求。
而且从XCode3开始就是风格2,后续又在不断的变,这样对代码风格的影响可不少,分析代码来说,不同风格总不会那么顺畅,感觉格格不入,一条记忆法则就是,在特定环境中重现,如果不能很快记个大概,阅读别人的代码到另一部分时,就没办法在头脑里建立起有效果的上下文关联,逻辑怎么能清晰地出现呢?!
再有,XCode的代码格式化功能确实有些差强人意,白瞎了完整单词命名那么长串了,希望苹果有空儿时,能在没没落之前,把这个活儿给干了!