各位对objc的语法怎么看?

2013-09-15 22:09:16 +08:00
 frogs
写c和python程序好多年,觉得自己对语言的语法洁癖越来越厉害了。
觉得ojbc的语法真是啰嗦,写个程序屏幕上满满的字。。真觉得苹果公司该出obj3.0了。
9527 次点击
所在节点    程序员
57 条回复
alexrezit
2013-09-16 09:19:12 +08:00
@frogs
== 比较的是内存地址, 如果用它来比较字符串内容的话, 那用什么来比较内存地址?
fgwww
2013-09-16 09:43:01 +08:00
喜欢简洁的话,看看这个:
component.setCentered(true, false);
event.initKeyEvent("keypress", true, true, null, null,
false, false, false, false, 9, 0);

现在感觉如何了?
lijia18
2013-09-16 09:45:37 +08:00
喜欢oc的语法,很强大,很清晰。
SearchDream
2013-09-16 09:54:37 +08:00
@anerevol Don't make me think +1
chchwy
2013-09-16 09:54:56 +08:00
有Xocde的自動補全下,我只能說Objective-C的語法超棒,語句即文檔。
fangzhzh
2013-09-16 09:56:23 +08:00
喜欢obj的库 靠猜都可以写代码
PrideChung
2013-09-16 09:57:57 +08:00
@frogs 不觉得有多啰嗦,字符数不等于可读性,强制命名参数可以消灭很多查文档的需求。
一门语言的风格从诞生的时候就已经定下了,不要指望下个版本能有什么翻天覆地的变化。
ldehai
2013-09-16 10:02:59 +08:00
一开始都这样,熟悉了就知道她的好了
railgun
2013-09-16 10:13:42 +08:00
习惯了……
vingel
2013-09-16 10:32:23 +08:00
我厂出品的一个 Objective-C 奇葩方法名,你们感受一下: [client responseContactRequestChangeContactWithRequest]
66450146
2013-09-16 10:46:56 +08:00
如果苹果提供的是一个命令行编译器而不是整个 IDE 的话,这语言确实很屎

冗长的名称让它高度依赖 IDE,但是一个补全能力强大的 IDE 则可以让这种缺点变成一个特性。这样的名字可以减少很多查询文档的必要,也让查文档容易很多
dorentus
2013-09-16 10:52:56 +08:00
@frogs 操作符重载是双刃剑啊。再说同类的里面,只有 C++ 支持这个吧。
PrideChung
2013-09-16 11:59:00 +08:00
@vingel 方法名起得奇葩能怪编程语言?
client.responseContactRequestChangeContactWithRequest()
这样就没问题了?
vingel
2013-09-16 12:01:57 +08:00
@PrideChung 我这又没怪 oc。

我举例是为了说明,再好的语言也经不起人们瞎用。
chisj
2013-09-16 12:16:21 +08:00
自从加强了@的语法糖功能和[]的作用,我觉得objc几乎完美了。
meta
2013-09-16 12:29:17 +08:00
我觉得objc语法上是比较别扭,但是语意还是很清晰的,像c++那种,格式看起来简洁,其实代码读起来相当费劲。
timothyye
2013-09-16 12:32:11 +08:00
来黑一下,this is objc: [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
so898
2013-09-16 12:41:18 +08:00
@frogs
这里 == 应该是继承自C/C++的对比内存地址,貌似这货在某个SDK下会被标注为warming
isEqualToString: 对比的是两个NSString的值
楼主你不能把这两个当成一样的东西……

至于两个方法为啥都存在,估计是为了方便继承C/C++代码,或者说OB-C和C/C++混写
fgwww
2013-09-16 12:55:23 +08:00
@timothyye a->b.c->d.e->f.g->h->i.j->k->l.m->n->o.p->q->r.s->t->u.v->w.x->y.z
PrideChung
2013-09-16 12:56:18 +08:00
@frogs isEqualToString: 有什么难以接受的, 比较内存地址才是 == 本来的作用,其他语言里面能够用来比较字符串内容要么是运算符重载要么是编译器或者解析器动了手脚罢了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/82559

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX