2009-06-20 52 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等工具时,它一定会派上用场。