1
lidashuang 2013-09-15 22:16:14 +08:00
同意,不喜欢
|
2
ispinfx 2013-09-15 23:00:59 +08:00
语法洁癖越来越严重了+1
|
3
echo1937 2013-09-15 23:15:57 +08:00
不好意思,我看成odbc了.
|
4
shinwood 2013-09-15 23:23:54 +08:00
可读性奇差无比,我本以为 Java 够啰嗦了,没想到 Objective-C 将 Java 直接给秒成渣了。
|
5
frogs OP |
6
xiaoye5200 2013-09-16 00:03:37 +08:00
有慢慢在优化,有感觉到,但是到完美简明语法还有距离,急也没用,吐槽也没用
|
7
liuxurong 2013-09-16 00:07:33 +08:00
还是 Python 最整洁。
|
8
Hysteria 2013-09-16 00:08:07 +08:00
大学时候只用过c/c++,毕业之后一直使用OC。觉得已经习惯了这种很长很长的变量名、方法名了,可读性很高啊,缺点只是打起来麻烦。
|
9
cyberscorpio 2013-09-16 00:30:13 +08:00
我很喜欢 objc 这种自描述的函数调用方式。
|
10
goodan 2013-09-16 00:33:48 +08:00 via iPhone
喜欢…
像读英文诗句… |
11
liaa 2013-09-16 01:08:17 +08:00
看楼上说喜欢可读性很长的变量名,方法名很有同感, 比如: isLatestNoticeDateChanged ...求破
|
12
ipconfiger 2013-09-16 01:21:43 +08:00
有靠谱的自动完成就不怕函数变量名长了
|
13
xsown 2013-09-16 02:15:10 +08:00 1
刚学的时候看着不习惯,学会了以后很喜欢,尤其是 + 表示 class method,- 表示 instance method,很可爱阿有木有
然后就是方法的声明/调用格式,[reader readContentsFromFileNamed:file async:YES charset:UTF8]; 比起 reader.readContentsFromFile(file, YES, UTF8); 明显更清晰,各参数的意义一目了然,而且如 @goodan 所说,有英文句子的美感,看着很舒服 |
14
alexrezit 2013-09-16 06:33:43 +08:00 via iPhone 1
写 Python 神烦. 从来记不住有几个参数, 每个参数都是啥.
|
15
angelface 2013-09-16 06:56:40 +08:00 via iPhone 1
喜欢的不得了,简直完美,变量长并不是语言的问题objc并没有不然你使用短变量比如:NSString *a,短方法发明比如-(void)b;但问题是这样命名后你以后怎么维护呢,所以我宁愿-(void)updateRectIfNessesary;直观明了,名字长点怕什么,有自动完成呢。另外我喜欢objc的原因是即有java这样的OO,又不失c这样的简洁。更不用说命名参数了,前两天还和别人赞叹Apple的API完美的就像Apple的硬件一样,简单明了,基本不用常看文档就知道什么作用,没有oc的语法支持还真做不到,还有太多让人喜欢的地方了,就不一一列举。
|
16
anerevol 2013-09-16 07:23:28 +08:00
想到一句话,Don't make me think。
1. 用objective-C调用多个参数函数时候不用思考参数的位置。 2. objective-C里面缩写较少,就算你第一次用这个函数基本上就能清楚这个函数是干嘛的,很多c函数的缩写太厉害,每次看到缩写就会不自觉的停顿下想想是什么的缩写。 每次写代码的时候如果被1,2这样的情况打断多次就会觉得很不爽... 代码是写给人看的嘛,挺喜欢objective-C的。 |
17
hanf 2013-09-16 08:46:14 +08:00
smalltalk的拙劣模仿,强扭的瓜
|
18
kavi 2013-09-16 08:53:49 +08:00
如果没有自动补全,objective-c 真不知道该怎么写了 = =!
|
19
Numbcoder 2013-09-16 09:02:41 +08:00
非常喜欢 smalltalk 式的语法。
可读性非常好,函数调用基本上不用看文档就知道什么意思。 如果你的函数名定义的好,你也不用写什么文档注释,别人一看就懂。 |
20
frogs OP @anerevol
如果这么说的话,到还觉得有点道理。 不过觉得苹果公司还是该与时俱进了。 在大部分人都习惯string1 == string2这种语法的时候, 苹果还固守着[string1 isEqualToString string2]这种语法,真让人觉得顽固不化。 |
22
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); 现在感觉如何了? |
23
lijia18 2013-09-16 09:45:37 +08:00
喜欢oc的语法,很强大,很清晰。
|
24
SearchDream 2013-09-16 09:54:37 +08:00
@anerevol Don't make me think +1
|
25
chchwy 2013-09-16 09:54:56 +08:00
有Xocde的自動補全下,我只能說Objective-C的語法超棒,語句即文檔。
|
26
fangzhzh 2013-09-16 09:56:23 +08:00 via Android
喜欢obj的库 靠猜都可以写代码
|
27
PrideChung 2013-09-16 09:57:57 +08:00
@frogs 不觉得有多啰嗦,字符数不等于可读性,强制命名参数可以消灭很多查文档的需求。
一门语言的风格从诞生的时候就已经定下了,不要指望下个版本能有什么翻天覆地的变化。 |
28
ldehai 2013-09-16 10:02:59 +08:00
一开始都这样,熟悉了就知道她的好了
|
29
railgun 2013-09-16 10:13:42 +08:00
习惯了……
|
30
vingel 2013-09-16 10:32:23 +08:00
我厂出品的一个 Objective-C 奇葩方法名,你们感受一下: [client responseContactRequestChangeContactWithRequest]
|
31
66450146 2013-09-16 10:46:56 +08:00
如果苹果提供的是一个命令行编译器而不是整个 IDE 的话,这语言确实很屎
冗长的名称让它高度依赖 IDE,但是一个补全能力强大的 IDE 则可以让这种缺点变成一个特性。这样的名字可以减少很多查询文档的必要,也让查文档容易很多 |
33
PrideChung 2013-09-16 11:59:00 +08:00
|
34
vingel 2013-09-16 12:01:57 +08:00
|
35
chisj 2013-09-16 12:16:21 +08:00
自从加强了@的语法糖功能和[]的作用,我觉得objc几乎完美了。
|
36
meta 2013-09-16 12:29:17 +08:00
我觉得objc语法上是比较别扭,但是语意还是很清晰的,像c++那种,格式看起来简洁,其实代码读起来相当费劲。
|
37
timothyye 2013-09-16 12:32:11 +08:00
来黑一下,this is objc: [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
|
38
so898 2013-09-16 12:41:18 +08:00
@frogs
这里 == 应该是继承自C/C++的对比内存地址,貌似这货在某个SDK下会被标注为warming isEqualToString: 对比的是两个NSString的值 楼主你不能把这两个当成一样的东西…… 至于两个方法为啥都存在,估计是为了方便继承C/C++代码,或者说OB-C和C/C++混写 |
39
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
|
40
PrideChung 2013-09-16 12:56:18 +08:00
@frogs isEqualToString: 有什么难以接受的, 比较内存地址才是 == 本来的作用,其他语言里面能够用来比较字符串内容要么是运算符重载要么是编译器或者解析器动了手脚罢了。
|
41
angelface 2013-09-16 12:58:57 +08:00
|
42
frogs OP |
43
meta 2013-09-16 13:07:57 +08:00
|
44
alexrezit 2013-09-16 13:14:46 +08:00
@frogs
没写过 C, 难道 C 不需要 strcmp? stringA 和 stringB 本来就是两个 pointer, pointer 用 == 只能比较地址. |
45
ultragtx 2013-09-16 13:59:44 +08:00
我一直想知道喷objc-c语法的到底写过obj-c多长时间,以及是不是用Xcode写
|
46
davepkxxx 2013-09-16 14:32:07 +08:00
@meta lisp (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 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11 ) 12) 13) 14) 15) 16) 17) 18) 19) 20) 21) 22) 23) 24) 25) 26)
|
47
vincenttone 2013-09-16 14:32:33 +08:00 1
我用过几个语言,多数是类似c语法的,用ObjC的时候确实感觉有些奇怪,但如果深入的用一段时间,我觉得还挺好的。ObjC相对来讲算是比较易读的了,比如你定义一个方法名:
- (BOOL) checkWithUserName: (NSString *) username andPassword: (NSString *) password; 这样的方法名定义不是挺好的吗? 很明显的英文。 如果用Python呢? def checkByUserNameAndPassword(self, uname, pwd): # xxxx 但是我为什么要写self呢?很多人说self是为了语义清晰,但是我就是不喜欢,因为我用python的时间不够长,理解不了太深刻的Python的东西,我就喜欢用起来简单。甚至有些人会吐槽python的缩进语法机制。 我想说其实有时候一个东西好的地方可能恰恰是它的缺点。 写Ruby的时候听说Ruby很耗资源,就四处说,但是ruby在语法上的便利是非常棒的。 说PHP现在的状态是一团糟(其实我也这么认为),但是有什么关系呢,PHP本来就是为了更容易让用户学习和使用来设计的。 js的语法,很多人觉得糟透了,但是他的动态特性反而也是这么表现出来的。 lisp大家也都知道,括号,但是括号对于lisp来很重要。 学Erlang时发现变量变不了,会吐槽我擦为什么变不了还叫变量啊!但是Erlang的变量为并行化做了不少事情。 很多人觉得c太简单,觉得c++太复杂,但这也是他们的强大的地方。 但是变量名太长如果没有XCode输入会吐血,这个我认同。 |
48
tab 2013-09-16 14:42:40 +08:00
只有刚上手的时候觉得getter和setter的声明很诡异,习惯以后就还好了。
无疑OC是语法非常简练,易学易上手。现在做游戏开发写C++感觉很多地方都复杂混乱,没有统一的标准。就拿String来说,很多类库会自己定义,搞得我晕头转向。 另外我觉得OC和iOS SDK以及XCode已经到水乳交融、不可分割的地步了,毫无疑问这是一套非常成熟用起来非常舒服的组合(或者叫有机整体)。很多人不习惯是由于没有阅读官方文档或者不习惯不够了解iOS的API,甚至都没真正做过开发,如果只是看了表面语法就来喷的童鞋还是真正体会一段时间再说吧,相信会让你看到不一样的地方。 |
49
refresh 2013-09-16 15:51:53 +08:00 1
刚写还好,写多就习惯了,还挺好的,是有点冗长,特别是参数过多的时候
|
52
Linxing 2013-09-17 17:55:43 +08:00
刚刚开始写确实不习惯,久了之后就会觉得很多时候都没必要写注释了
|
53
hengxin196 2013-09-17 20:04:06 +08:00
@timothyye 建议不要超过三层
觉得oc 可读性很好呀 不需要注释 |
54
everedit 2013-09-17 20:26:28 +08:00 via iPad
不喜欢objc
|
55
wupher 2013-09-17 21:04:12 +08:00
不明白一门语言的美,很难真正掌握它,使用好它。
|
56
leafduo 2013-09-17 21:53:05 +08:00
感觉在黑的都是没怎么写过 OC 的……
我自己认为 OC 的可读性是相当好的,就位置参数一点就完杀大部分语言。Java 的不自由跟 OC 的 verbosity 完全是两回事,OC 写出来虽然很长,但是跟 plain English 很像,基本不需要解释,可读性好。 关于 -isEqualToString:,这个是因为不支持运算符重载吧,我觉得都好。 |