放置视图控制器相关枚举的位置



情况

我有一个页面视图控制器,其中包含多个子视图控制器。每个子视图控制器都略有不同。

为了便于管理,我定义了enum MyPageViewChild

enum MyPageViewChild {
case someName...
case someName...
case someName...
case someName...
case someName...
case someName...
case someName...
}


问题

我很难弄清楚哪里是放置枚举的最佳文件。

当枚举很短时(比如除了这种情况的声明之外没有其他的var&funcs),我可能可以把它放在与页面视图控制器相同的文件中。

当枚举很长的时候,比如有很多额外的var&funcs,它应该放在某个地方,但不能放在与页面视图控制器相同的文件中。


问题

它和视图控制器有很强的相关性,所以我计划创建一个文件PageViewChild.swift,并将其直接放置在页面视图控制器中。

所以目录(或者实际上是Xcode组)应该是这样的。

- ViewController
- MyPageViewChild.swlft <- enum among with view controllers
- MyPageViewController.swift
- MyPageViewChildOne
- MyPageViewChildTwo
- MyPageViewChildThree

上面的例子可以吗?还是应该放在项目中的model目录或enums目录下?

首先,我不得不说这是一个基于意见的问题,它实际上取决于您的代码组织。

不管怎样,在类作用域内还是在作用域外声明enum都没有区别。您必须记住的唯一一件事是,如果您需要获得它的引用,您必须指定enum在哪里声明为

SomeClass.Enum

我认为,若enum和其他类强相关,那个么可以在相关类的作用域内声明enum。例如,我们可以在Swift的新版本中看到这种行为,其中许多枚举被重命名为(基本上,枚举被移动到相关类的作用域,并被重命名为巧妙的自我描述的较短名称)

很好的例子可以是重命名与UIControl相关的事件的枚举

UIControlEvents -> UIControl.Event

你看到这种策略了吗?所以,决定吧。

最新更新