首页 » iOS编程(第4版) » iOS编程(第4版)全文在线阅读

《iOS编程(第4版)》2.12 深入学习:如何为类命名

关灯直达底部

开发RandomItems这样的小规模应用时,只要创建少量的类就能完成任务。但是当应用的规模逐渐扩大,实现越来越复杂时,要创建的类会越来越多。当项目规模达到一定程度时,很可能产生问题:两个不同的类拥有相同的名称。当两个不同的类拥有相同的名称时,编译器将无法判断应该使用哪一个。这类问题称为名字空间冲突(namespace collision)。

其他编程语言是通过引入名字空间(namespace)机制来解决这类问题的。读者可以将名字空间想象成组,不同的类可以归在不同的组中。在这些编程语言中使用类时,需要同时给出类名和其所属的名字空间。

Objective-C没有提供名字空间机制。为了能更好地区分类,需要为类名增加前缀(长度为2至3个字符)。以RandomItems为例,BNRItem类的类名就有BNR前缀,而不是单纯的Item。

有着良好编程风格的程序员都会为类名加上前缀。这些前缀通常会和当前开发的应用有关,或者和代码所属的代码库有关。举一个假设的例子,如果读者正在开发一个名为“MovieViewer”的应用,就可以将所有和这个项目有关的类的类名都加上前缀MOV。对于会在多个项目中共享的类,其前缀通常会和程序员的名字(例如CBK)、公司的名称(例如BNR)或类库(例如一个专门提供地图功能的库,可以使用MAP前缀)有关。

Apple所提供的类也有前缀。这些类都是通过框架组织的,并且每个框架都有自己的前缀。例如UILabel类是由UIKit框架提供的,NSArray类和NSString类是由Foundation框架提供的(NS代表NeXTSTEP,这些类最初都是为NeXTSTEP系统开发的)。

读者在编写类时,应该使用3个字符的前缀,避免和Apple提供的类产生冲突——它们都是2个字符的前缀。即使现在使用只有2个字符的前缀没有出错,也应该尽量改为使用3个字符的前缀,以减少与Apple未来发布的类产生冲突的可能。