在一个.swift文件中创建多个类是可以接受的,还是应该为每个类创建一个单独的.swift文件?

时间:2014-06-13 18:04:32

标签: class swift

在一个swift文件中创建多个类是不是很差的技巧,还是最好为每个类创建一个单独的swift文件?

例如,哪个更好:

甲。 ViewController.swift中的多个类:

1。 alpha.swift

class alpha: UIViewController { ... }
class beta: UIWebView { ... }
class gamma: UINavigationController { ... }

B中。为每个类分隔.swift文件:


1。在alpha.swift

class alpha: UIViewController { ... }

2。在beta.swift

class beta: UIWebView { ... }

第3。在gamma.swift中

class gamma: UINavigationController { ... }

3 个答案:

答案 0 :(得分:33)

简短回答:取决于

答案很长:
如果你有一个强烈绑定在一起的小类,那么把它放在同一个文件中是正确的。
如果你有很长的,不相关的类,那么你最好将它们放在不同的文件中。

答案 1 :(得分:11)

这不是一种糟糕的技术, IF 这些类是连接的。

要确定它们是否已连接,请询问:可以使用一个课程而不使用另一个课程吗?

如果是,那么你应该有两个不同的文件,因为你可能只需要使用其中一个。


例如,在C ++中,集合具有迭代器的内部类。 (我知道它是一个C ++示例,但问题与语言无关)。

虽然如果这些类彼此无关(在同一个视图上并不算数),那么它们每个都应该有各自的类。

答案 2 :(得分:4)

基于痛苦的调试和最近几天在互联网上搜索,我对这个问题有不同的答案。我是拥有超过15年经验的c ++ dev。从这种语言来看,我熟悉一些需要protected访问的设计技巧。由于Swift不支持它,并且事实证明它们在不久的将来不会支持它,我开始使用private访问并在同一个文件中写几个类。这样我就可以解决丢失的protected修饰符(私有函数在同一个文件中可见,因此它们对于同一文件中的所有类都是可见的,如果这些类是派生类,则私有实际上是作为受保护的工作)。一切都很好,我很高兴发现我的应用程序崩溃与EXC_BAD_ACCESS代码= 1 ...异常不是因为我的代码,这是因为它的成员布局有点错误。例如,如果我通过实例变量从派生类调用一个函数a(),则调用func b()。 b()也是同一个类的成员,并在a()之前定义。这就是为什么有些函数会抛出糟糕的访问异常。实例指针已损坏。将所有3个类移到独立文件后,一切都很好。

不确定这是实际原因还是我做错了什么,但是当你在同一个文件中定义多个类时,100%的情况都不会有定义的行为。可能是编译器问题,Swift是年轻语言,甚至我在Gold Master工作室测试应该是稳定的,但仍然存在很多错误。