iOS / OSX开源项目的命名约定


12

并非总是如此,但在大多数情况下,您会发现iOS或Mac OS X开源项目,其名称以作者姓氏和名字的首字母开头。如果项目要由Nick Leblanc创作,则该项目将被读取为NLMyProject

例子:

那是哪里来的 是否有人首先以这种方式编写的,然后其他人都遵循?

即使在《苹果指南》中,我也找不到任何相关信息。那个成语写在任何地方吗?


1
好问题,好酷的开源示例!;-)
Leo Natan 2014年

Answers:


16

与C一样,目标C也没有名称空间。这意味着,如果某人已经定义了一个函数foo或一个类Bar,则它必须是全局唯一的,并且不能定义它。当您拥有代码然后添加另一个库时,这可能会导致很多麻烦。

还有就是在苹果公司为此提出了指导原则与目标C编程:约定的iOS开发者库的部分:

在整个应用中,某些名称必须唯一

每次创建新的类型,符号或标识符时,都应首先考虑该名称必须唯一的范围。有时,这个范围可能是整个应用程序,包括其链接的框架;有时范围仅限于封闭的类,甚至只是一段代码。

类名在整个应用程序中必须唯一

必须不仅在您在项目中编写的代码内而且在所有可能包含的框架或捆绑软件中,都对Objective-C类进行唯一命名。例如,应避免使用通用类名,例如ViewController或TextParser,因为包含在应用程序中的框架可能无法遵循约定并创建具有相同名称的类。

为了使类名唯一,惯例是在所有类上使用前缀。您会注意到,Cocoa和Cocoa Touch类名称通常以NS或UI开头。Apple保留了此类的两个字母的前缀,供在框架类中使用。当您了解有关Cocoa和Cocoa Touch的更多信息时,会遇到与特定框架相关的各种其他前缀:

...

您自己的类应使用三个字母前缀。这些可能与公司名称和应用名称的组合有关,甚至可能与应用中的特定组件有关。例如,如果您的公司名为Whispering Oak,并且您正在开发一款名为Zebra Surprise的游戏,则可以选择WZS或WOZ作为类前缀。

因此,您提到的这些库打破了这种约定,但成为了Objective C中缺少命名空间的问题的核心。


NSHipster的进一步阅读Namespacing
解决Objective-C名称空间冲突的最佳方法是什么?
如何在iOS Objective-C代码中使用命名空间?


听起来像Objective-C 确实需要名称空间 ...
Chris Cirefice

1
@ChrisCirefice确实不错,但是要意识到的是,目标C是C之上的薄薄一层。尝试引入名称空间可能比不破坏外观要难。深入探讨为什么Objective-C没有名称空间?我找到了Clang开发人员-向Objective-C添加名称空间。记住,@使用,因为在C中不使用它。尝试添加另一个不会破坏其他功能的运算符是一项挑战。

1
@ChrisCirefice命名空间无法解决任何问题。前缀冲突只是成为名称空间冲突。
Miles Rout 2014年

@MichaelT目标C一段时间以来还不是C之上的薄层(目标C 2.0)。现在,苹果焦点已经转移到斯威夫特,其中包括更现代的功能,如命名空间,但目前缺乏客观C.其他功能
狮子座纳坦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.