swift 静态和示例方法背后的设计决策[已关闭]

4ngedf3f  于 2023-01-01  发布在  Swift
关注(0)|答案(1)|浏览(117)
    • 已关闭**。此问题为opinion-based。当前不接受答案。
    • 想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

8小时前关门了。
Improve this question
我正在开发一个CloudKit应用程序,我需要在其中查找用户是否登录到iCloud。我创建了一个UserAccountManager类,其中包含一个属性isSignedIn。

class UserAccountManager {
    
    static var isSignedIn: Bool {
        get async throws {
            let container = CKContainer.default()
            let accountStatus = try await container.accountStatus()
            
            switch accountStatus {
                case .couldNotDetermine, .restricted, .noAccount, .temporarilyUnavailable:
                    return false
                case .available:
                    return true
                @unknown default:
                    return false
            }
        }
    }
}

当前,我的属性isSignedIn是静态属性。我的问题是它应该是静态属性还是示例属性。我是使用UserAccountManager. isSignedIn访问它,还是应该重新实现它以便创建UserAccountManager的示例。

icnyk63a

icnyk63a1#

我认为这个问题确实算得上是基于观点的。尽管如此,我有一个观点,在评论中阐述它需要太长的时间。
问问你自己为什么你有一个“UserAccountManager"。它管理什么?任何东西?在你的位置上,我会调用我的类UserAccount,它将建模一个用户帐户。在这一点上,isSignedIn应该是一个示例属性应该是显而易见的。
现在,您可能会争辩说,一次只能有一个人登录CloudKit,但是在任何情况下使用示例都有好处,尤其是您可以在单元测试中模拟它们。

相关问题