2012-02-27 60 views
0

一起推薦我想知道,什麼是真正的好處,將標籤與功能參數結合在一起。據我所知,通過以下方式爲什麼使用標籤與功能參數

不推薦

-(void) insertObject:(id)anObject:(unsigned int)index 

推薦

-(void) insertObject:(id)anObject atIndex:(unsigned int)index 

除了:

  1. 啓用函數重載,還有什麼?
+2

所以你知道第二個參數是什麼? :) – 2012-02-27 06:41:09

回答

4

因爲使用參數標籤使函數調用看起來更像一個英文句子而不是一個魔法咒語。

+0

在這一個兄弟乾杯!我笑了起來。答案完全合理。 – 2012-02-27 07:01:42

4

這不會啓用函數重載。 Obj-C沒有函數重載。它所做的是正確命名方法。您的第一個方法名爲-insertObject::,第二個方法名爲-insertObject:atIndex:。雖然兩者在技術上都有效,但前者被認爲是非常糟糕的形式,特別是如果你添加更多參數,例如-doSomething::::

Obj-C的一個經常被引用的好處是方法命名允許您通過閱讀而不必查看文檔來了解代碼在做什麼。舉例來說,如果我有

[self initWithName:@"foo" andAge:13] 

這是顯而易見的參數是什麼,但如果我

[self init:@"foo" :13] 

則不是很明顯,在所有什麼這些參數應該代表。

當你有類似命名的方法時,它也有幫助。例如,NSKeyValueCoding定義了-setValue:forKey:-setValue:forUndefinedKey:。很明顯,如果它被命名爲-setValue::,那麼這裏就會發生碰撞。

相關問題