2013-05-08 68 views
2

在另一个类的相同.h/.m文件中定义类别是否是一种很好的做法?我知道它的构建没有错误,并且与分开定义的完全一样。在另一个类的相同.h/.m文件中定义一个类别

我想这样做的主要原因是因为我正在开发一个开源的控件,我希望它只有一个.h/.m文件。

+0

坏主意你在想什么。为每个类别创建单独的文件 – 2013-05-08 10:48:28

回答

3

一般来说,将多个类和类别合并到同一个头/实现中的最大问题是可搜索性受损。当一个类与另一个类一起存在于一个文件中时,文件名将不再反映头/实现包含其他类的事实,这使得其他人难以找到你的类。

但是,如果您的项目很小且独立,那么可搜索性就不是一个问题。当只有一个文件要搜索时,每个特定代码的位置都不存在问题:它全部位于该文件中。这听起来像是你的项目既小又独立,所以如果你想要这样的话,将所有代码放在单个源文件中看起来没有问题。

另一种方法是将每个类和类别放在一个单独的头文件/实现文件对中,然后定义一个包含它们的头文件。这可以让你保持一个理想的项目组织,并让你的用户包括一个头来使用你的组件。

+0

+1我会补充一点,如果有语义上的局部性,这也更有意义。例如。如果类别很小并且与主类直接相关,并且这对于类的消费者来说是显而易见的,那么比起将不相关的定义放在一起以避免额外文件更合理。 – 2013-05-08 11:00:34

+0

我的项目确实很小且独立。你们两个说的都有道理,所以我会继续前进,并将这个类别包含在同一个文件中。谢谢 :) – 2013-05-08 12:43:20

1

如果你只在一个地方需要这个类别,我会说.m文件中的类别并不差。

显然,如果你需要在多个地方这一类,你绝对应该移动到它自己的文件:惯例是用这种方式来命名:

BaseClass+categoryName.{h,m} 

如:

NSString+reverseString.h 
NSString+reverseString.m 
+0

我也是:如果扩展名仅用于本地,我(有时)将其放在需要它的类的.m中。 – 2013-05-08 11:08:15

相关问题