Objective-C类前缀

时间:2010-09-14 11:26:45

标签: objective-c cocoa coding-style

您对ObjC课程命名的偏好是什么?我有点不确定什么是最合理的方法,所以听听其他一些意见会很好。

Apple建议为cocoa类加前缀,因为ObjC不支持名称空间。谷歌ObjC风格指南(我主要针对的是)取消它们,除非你扩展(类别,类扩展等)一个NSClass。

我的偏好不是为课程添加前缀,因为我也认为这是浪费信件而且不会导致原因。它只应该在框架代码中用于表示此类属于它而不是应用程序的类,但我不会在应用程序级别使用它。

你的是什么,最重要的是为什么?


我的结论(请随时添加您的意见以做出最明智的决定)


应用程序级别类:

  • 我决定使用1个字母前缀(如CMyClass)。主要原因是文件组织目的(例如,在Finder中更好的分组),并且它仍然使用比长度为2或更长的前缀少的类名字母。
    • 为可可类使用前缀“ C ”(例如CAudioController.h
    • 为实用程序集合使用前缀“ U ”(普通C,例如USystemAudio.h

框架级别类:

  • 带有2个或更多自定义字母的前缀类,最好是唯一的,因为它可能会与其他应用共享。

分类

  • 类别命名如下:NSClassName+ExtensionPurpose

4 个答案:

答案 0 :(得分:22)

我的一般方法是为作为框架或可加载包的一部分的类名添加前缀,即可以在多个应用程序和其他框架之间共享的类,但不要打扰作为独立应用程序一部分出现的类。< / p>

如果史蒂夫·乔布斯给了我一个愿望,那就是在Objective-C 3.0中设置名称空间(明天可以使用)。

答案 1 :(得分:4)

Scott Stevenson对于客观C代码的外观有一个非常好的指导。查看以下链接。

  

http://cocoadevcentral.com/articles/000082.php
   http://cocoadevcentral.com/articles/000083.php

这些链接还将回答您的问题,如何为课程命名以及原因。

答案 2 :(得分:3)

我使用前缀,即使在不会共享的应用程序代码中 - 主要是为了保持一致。我通常使用代码来源的应用程序或框架名称的2个字母的缩写,除非不同的前缀(例如,3个字母或简短的描述性单词)更有意义。

答案 3 :(得分:1)

你绝对应该为它们添加前缀。如果发生碰撞,则行为未定义。

实际发生的事情(最后我遇到了这个)是二进制文件已加载,但是如果已经加载了具有该名称的另一个(objc)类,则不会加载您的类。我会让你弄清楚当你创建这个类的实例时你会得到哪些实现;)这样的碰撞可能会导致崩溃或许多吞噬异常(和一个非功能性的应用程序)。很多开发人员使用2个大写字母,这是(所有事情都相同)26 * 26他们将使用相同的前缀。再次 - 这发生在我身上......最好是你这样做以避免以后重写很多代码。