原文地址:http://amattn.com/2011/10/15/the_disposition_of_objective-c.html
笔者经过十年的Objc编程,在此谈一些对Objc的评论。
冗长(Verbose)
这是最显然的Objc特性。Objc编程中总会用到极为冗余的语法,你只能对此习以为常。有经验的Objc程序员相当倚赖于IDE等多种工具来辅助编码。若你要熟练而美观地书写Objc代码,就得动用大量工具来对付该死的语法,如代码片段(snippets),键盘宏,定制的模板等。这些技巧用将出来,将一发不可收拾。幸好标准的消息传递机制便于阅读,为Objc挽回不少分数。
丑陋(Ugly)
Objc是一种丑陋的语言。把C语言拿来,又在类结构的里外充斥着@指令——这就像一个流浪汉穿着一个垃圾袋。再把Smalltalk硬塞进去。然后发明属性(Property)来善后。最后空降个^ 代码块(Block,iOS4之后推出的特性,相当于第一类值的C函数,译者注)来完成这门语言。
我深爱Objc,但依然认为Objc的语法既不简洁,亦不美观。
易读(Readable)
优秀的Objc代码尤其易读。这部分得益于Objc命令式的语法倾向。通常而言,消息传递机制是程序错误的温床。但能够在消息的各参数前加入说明,使消息体能够自我说明,非常易读。
消息传递机制是Objc的最大亮点。
编译型语言(Compiled)
这有两个显著的好处:
得益于编译器和静态分析器,许多错误不必由程序员来捕捉。于是Objc程序员不为那些无聊而机械的错误所困。
第二个好处是优异的程序性能。于是时至今日,iPhone 3GS之后的设备依然性能优异。
生态系统(Ecosystem)
苹果公司包揽了Objective-C的IDE,语言实现,以及主流的库。Xcode,LLVM,Cocoa弥补了很多语言上的缺陷。由于对语言结构上的扩展,诸如子类化,类别是在运行时完成的,自己写Objc的SDK,框架,库的话,会遇到很多麻烦。
静态类型,动态类型,基础类型(Static, Dynamic or Duck Typed)
在实践中,土鳖的笔者(your ostentatioulay humble author)偏爱静态类型和原始类型,因为它们很少导致错误。当你确实需要支持多种类型,id是一个动态而方便的工具。正式和非形式协议是id的用武之地。
趋势(Momentum)
好酒历久弥香,Objc同样在成长中。我们已经得到了属性,块,GCD以及最近的ARC。只有傻瓜才会认为Objc没有前途。你日常使用的的编程语言会越来越易用吗?
Objc真正缺少什么?
我提一句箴言:
Objective-C:易扩展,易读的符号式(punctuation-based)编程语言。