2009-06-20 54 views
10

Objective-C沒有名稱空間,許多(如CocoaDevCentral's Cocoa Style Guide)建議在類名前添加首字母以避免命名空間衝突。名稱空間衝突是Objective-C中的一個問題嗎?

從上面的鏈接引用:

的Objective-C沒有命名空間,所以 與 首字母前綴的類名。這避免了「命名空間 衝突」,這是 兩段代碼具有相同名稱 但是做不同事情的情況。

這是有道理的,我想。但說實話,在一個相對較小的應用程序(比如iPhone遊戲)中,這真的是一個問題嗎?我真的應該將MyViewController重命名爲ZPViewController嗎?如果不是,命名空間衝突在什麼時候真正成爲問題?

+0

「Objective-C沒有名稱空間,所以在類名前加首字母」。哇,真棒創可貼我很想進入Objective-C,但缺乏命名空間是絕對愚蠢的。 – 2012-04-25 23:52:55

+1

@Nick自從我近兩年前寫這篇文章以來,我已經在應用商店中發佈了五款應用,並且從未遇到過這個問題。命名空間的缺乏似乎並不是一個問題,至少它不適合我(下面的答案也很重要)。 – zpasternack 2012-05-06 08:15:01

回答

20

如果你正在編寫使用一些庫的應用程序,那麼你已經知道你的名字空間是什麼樣的,你只需要選擇與現有可用函數不衝突的名字。

但是,如果你正在編寫供他人使用,那麼你應該選擇一個合理唯一的前綴來避免與其他庫名稱衝突。只有兩個字符可能仍然存在名稱衝突,但頻率會降低。

2

小應用程序不應該用完所有的好名字,所以不會有名稱空間的問題。

但是,習慣使用通常寫入語言的風格是一個好主意。它使得閱讀其他人的代碼更容易,並且讓其他人閱讀你的代碼更容易。

E.克,可以在Java駝峯變量,但在駝峯C#,在C hyphen_separated_names等瓦爾

這將使它更容易爲你的長遠學習。

0

我已閱讀(但未驗證)蘋果在其框架中包含私有類,但在名稱中不包含任何前綴。所以如果你的應用程序類的名字沒有前綴,你就有可能與這些前綴發生衝突。

0

我曾經使用過沒有前綴類的存儲庫。 (或者只有一些類是前綴的。)

我發現一件令人痛苦的事情是,有時很難判斷代碼是否由公司內部或外部的人編寫。使用一致的前綴使第一次閱讀代碼的人立即明白。

請記住,代碼將被讀取的次數比寫入次數多。

另外,使用grepsed等工具時,它一定會派上用場。