使用全局变量和常量是否是一种好习惯?(迅速5)

维亚切斯拉夫·巴金斯基

在我的工作中,我发现一个事实,就是只要应用程序正在运行,我经常需要存储一些属性,以便可以从不同的文件和类访问它们。

这是一个例子。我在Google云端硬盘中授权了一个用户,并且需要将该用户保存到变量中,以便在另一个类中引用该用户。我在该类上声明了全局常量,但是我不确定这是否是一个好习惯。如果我在类中声明此变量并通过该类的实例访问它,则我的应用程序将无法运行。

public var googleUser: GIDGoogleUser?

class MyViewController: UIViewController {
    ...
    func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!,
              withError error: Error!) {
    googleUser = user //Here I save user to googleUser property
    }
    ...
}

class GoogleDriveService {
    ...
    private lazy var driveService: GTLRDriveService = {
        let service = GTLRDriveService()
        if let user = googleUser { //Here I use googleUser property
            service.authorizer = user.authentication.fetcherAuthorizer()
        }
        service.shouldFetchNextPages = true
        service.isRetryEnabled = true
        
        return service
    }()

    //Then I use the driveService property in some methods like fetchFileList, download and other, which I call from different View Controllers referring to an instance of the GoogleDriveService class
    ...
}
查理塔

您可以使用结构的静态变量来做到这一点:

struct Repository {
    static var googleUser: String?
}

googleUser使用结构类型进行访问/设置

Repository.googleUser = user

甚至更好,使用像这样的单例类:

class Repository {
    static let shared = Repository()
    var googleUser: String?
}

那么您可以直接使用它:

Repository.shared.googleUser = user

或将单例实例注入要使用的任何类googleUser

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在递归中使用全局变量是否是一种好习惯

来自分类Dev

在递归中使用全局变量是否是一种好习惯

来自分类Dev

在同一元素上使用高度和边框是否是一种好习惯?

来自分类Dev

在网络应用程序中同时使用CMS和Laravel的组合是否被认为是一种好习惯?

来自分类Dev

这种减小在if语句中声明的变量范围的模式是否是一种好习惯?

来自分类Dev

在$ rootScope中存储变量是一种好习惯吗?

来自分类Dev

将所有变量和函数置于私有状态是一种好习惯吗?

来自分类Dev

公开struct属性的地址是否是一种好习惯?

来自分类Dev

在这种情况下,将常量值用作“ nil”(缺少值)是否是一种好习惯?

来自分类Dev

使用外部函数中的变量是一种好习惯吗?

来自分类常见问题

使用Exception防止类被不需要的参数实例化是否是一种好习惯

来自分类Dev

在AppEngine中使用较短的属性名称是否被视为一种好习惯?

来自分类Dev

在函数内使用裸括号是否是一种好习惯?

来自分类Dev

在此js代码段中使用break语句是否是一种好习惯?

来自分类Dev

在C#中使用类“枚举对象”是否是一种好习惯?

来自分类Dev

使用Task.ContinueWith()作为事件“ TaskEnded”的形式是否被认为是一种好习惯?

来自分类Dev

在开发环境中始终使用“ root”用户是否是一种好习惯?

来自分类Dev

在函数内使用裸括号是否是一种好习惯?

来自分类Dev

避免使用`sudo su`是否被认为是一种好习惯?

来自分类Dev

在Python中使用类型作为字典键是否被认为是一种好习惯?

来自分类Dev

通过使用方法扩展类是否是一种好习惯?

来自分类Dev

使用WCF简化配置是一种好习惯吗?

来自分类Dev

经常使用instanceof是一种好习惯吗?

来自分类Dev

大量使用本地存储是一种好习惯吗?

来自分类Dev

使用幻数是一种好习惯吗?

来自分类Dev

在AngularJS中结合使用CREATE和EDIT控制器是一种好习惯吗?

来自分类Dev

在JavaScript / jQuery中将DOM元素设置为全局变量是一种不好的编程习惯吗?

来自分类Dev

是否存在一种无需使用全局变量即可在atexit或类似版本中释放内存的方法?

来自分类Dev

只为 MVVM 中的 UI 变量创建模型和视图模型是一种好习惯吗?

Related 相关文章

  1. 1

    在递归中使用全局变量是否是一种好习惯

  2. 2

    在递归中使用全局变量是否是一种好习惯

  3. 3

    在同一元素上使用高度和边框是否是一种好习惯?

  4. 4

    在网络应用程序中同时使用CMS和Laravel的组合是否被认为是一种好习惯?

  5. 5

    这种减小在if语句中声明的变量范围的模式是否是一种好习惯?

  6. 6

    在$ rootScope中存储变量是一种好习惯吗?

  7. 7

    将所有变量和函数置于私有状态是一种好习惯吗?

  8. 8

    公开struct属性的地址是否是一种好习惯?

  9. 9

    在这种情况下,将常量值用作“ nil”(缺少值)是否是一种好习惯?

  10. 10

    使用外部函数中的变量是一种好习惯吗?

  11. 11

    使用Exception防止类被不需要的参数实例化是否是一种好习惯

  12. 12

    在AppEngine中使用较短的属性名称是否被视为一种好习惯?

  13. 13

    在函数内使用裸括号是否是一种好习惯?

  14. 14

    在此js代码段中使用break语句是否是一种好习惯?

  15. 15

    在C#中使用类“枚举对象”是否是一种好习惯?

  16. 16

    使用Task.ContinueWith()作为事件“ TaskEnded”的形式是否被认为是一种好习惯?

  17. 17

    在开发环境中始终使用“ root”用户是否是一种好习惯?

  18. 18

    在函数内使用裸括号是否是一种好习惯?

  19. 19

    避免使用`sudo su`是否被认为是一种好习惯?

  20. 20

    在Python中使用类型作为字典键是否被认为是一种好习惯?

  21. 21

    通过使用方法扩展类是否是一种好习惯?

  22. 22

    使用WCF简化配置是一种好习惯吗?

  23. 23

    经常使用instanceof是一种好习惯吗?

  24. 24

    大量使用本地存储是一种好习惯吗?

  25. 25

    使用幻数是一种好习惯吗?

  26. 26

    在AngularJS中结合使用CREATE和EDIT控制器是一种好习惯吗?

  27. 27

    在JavaScript / jQuery中将DOM元素设置为全局变量是一种不好的编程习惯吗?

  28. 28

    是否存在一种无需使用全局变量即可在atexit或类似版本中释放内存的方法?

  29. 29

    只为 MVVM 中的 UI 变量创建模型和视图模型是一种好习惯吗?

热门标签

归档