Swift:全局常量命名约定?

时间:2014-06-16 12:58:03

标签: naming-conventions constants swift global

在Swift中,似乎全局常量应该是camelCase。

例如:

let maximumNumberOfLoginAttempts = 10

这是对的吗?

我已经习惯了来自C的所有大写字母,例如MAXIMUM_NUMBER_OF_LOGIN_ATTEMPTS,但我想默认Swift惯例。

8 个答案:

答案 0 :(得分:57)

Swift 3 API指南声明“类型和协议的名称是UpperCamelCase。其他所有内容都是lowerCamelCase。”

https://swift.org/documentation/api-design-guidelines/

理想情况下,您的全局常量将位于某种类型的结构中,即UpperCamelCase,该结构中的所有属性都是lowerCamelCase

struct LoginConstants {
    static let maxAttempts = 10
}

并且这样访问,

if attempts > LoginConstants.maxAttempts { ...}

答案 1 :(得分:24)

我一直在讨论使用带有类级常量的主要资本的驼峰案例。例如:

static let MaximumNumberOfLoginAttempts = 10

它仍然是驼峰式的(正如Apple似乎推荐的那样),但大写的主要角色清楚地表明该值是不可变的。

答案 2 :(得分:5)

Apple支持camelCase。 也就是说,许多人使用_camelCase来区分它,特别是如果你可能在较低的范围内使用相同的名称。

答案 3 :(得分:4)

我经常看到用k声明的常量,如下所示:

static let kLoginAttemptsMax = value

这也跟随骆驼套管到“T”。

答案 4 :(得分:2)

Apple向我们展示了camelCase的常量。

我使用了更好的变体。所以对你的例子来说:

let maximumNumberOfLoginAttempts = 10
let MAXIMUM_NUMBER_OF_LOGIN_ATTEMPTS = 10

' MAXIMUM_NUMBER_OF_LOGIN_ATTEMPTS'对我来说是可读的,它立即显示,它是一个恒定的变量。

答案 5 :(得分:1)

有两种选择。

  1. 使用Apple的命名约定为thisIsMyConstant
    • 上行:它由Apple推广,所以这是“标准”的事情。
    • 缺点:如果没有Option+Click,则无法分辨是常量还是变量。
    • 侧面说明:苹果并不总是正确的。在苹果进行更改之前,包括我在内,很多人都在使用UIColor.myColor而不是UIColor.MyColor()方式。
  2. 使用Objective-C样式kThisIsMyConstant。由于许多Swift开发人员都是objc专家,对于大多数Mac / iOS开发人员来说,这应该是显而易见的。
  3. 使用C样式THIS_IS_MY_CONSTANTJava等许多其他语言也使用它。
  4. 使用类似ThisIsMyConstant的名称。我暂时无法想到使用这种风格的任何语言(应该有一些语言,但我不记得了),但这有点类似于Apple的建议。

答案 6 :(得分:1)

要改善@bmjohns的答案,最好使用enum而不是struct作为常量的名称空间。没有实例化的enum无法实例化,而struct则可以实例化。如果它是struct,则可以实例化(通过LoginConstants()),但这没有任何意义,没有意义。

惯例是使用枚举命名空间,例如:

enum LoginConstants {
    static let maxAttempts = 10
}

这确保LoginConstants的唯一有效用法是访问其静态成员。

答案 7 :(得分:0)

您不仅可以看到苹果所说的内容,还可以看到它们的作用。

您可以查看Foundation类,它是apple创建的类,默认情况下在创建新项目时将其导入ViewController文件中。

在类上按command + optionn + clic查看其声明。

image to see two swift examples from apple