在哪里放置视图控制器相关的枚举

Where to place view controller related enum

情况

我有一个带有多个子视图控制器的页面视图控制器。 每个子视图控制器都略有不同。

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

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


问题

我正在努力寻找放置枚举的最佳文件。

当枚举很短时(就像除了 case 声明之外没有其他 var 和 funcs),我可能会把它放在与页面视图控制器相同的文件中。

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


问题

它与视图控制器密切相关,所以我打算创建一个文件 PageViewChild.swift 并将其直接放置在与页面视图控制器相同的位置。

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

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

上面的例子可以吗,还是应该放在项目中的模型目录或枚举目录下?

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

无论如何,在 class 范围内或范围外声明枚举都没有区别。你唯一要记住的是,如果你需要为它获取引用,你必须指定声明枚举的位置

SomeClass.Enum

我认为,如果枚举与其他一些 class 密切相关,则可以在相关 class 的范围内声明枚举。例如,我们可以在 Swift 的新版本中看到这种行为,其中许多枚举 已重命名 (基本上,枚举已移至相关 class 的范围和重命名为巧妙的自我描述的更短名称)

很好的例子可以是为与 UIControl

相关的事件重命名枚举
UIControlEvents -> UIControl.Event

那么你看到那个策略了吗?所以,决定吧。