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

kmi*_*las 24 class swift

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

例如,哪个更好:

A. ViewController.swift中的多个类:

1. alpha.swift:

class alpha: UIViewController { ... }
class beta: UIWebView { ... }
class gamma: UINavigationController { ... }
Run Code Online (Sandbox Code Playgroud)

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


1.在alpha.swift中:

class alpha: UIViewController { ... }
Run Code Online (Sandbox Code Playgroud)

2.在beta.swift中:

class beta: UIWebView { ... }
Run Code Online (Sandbox Code Playgroud)

3.在gamma.swift中:

class gamma: UINavigationController { ... }
Run Code Online (Sandbox Code Playgroud)

Emi*_*lie 33

简答:这取决于.

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


Lor*_*olt 11

如果课程是连接的,这不是一种糟糕的技术.

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

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


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

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


dev*_*eak 5

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

不知道这是实际原因还是我做错了事,但是当您在同一文件中定义多个类时,并非100%的情况都具有已定义的行为。可能是编译器问题,Swift是年轻的语言,即使我正在使用应该稳定的Gold Master studio进行测试,仍然存在很多错误。