在Swift中,似乎全局常量应该是camelCase。
例如:
let maximumNumberOfLoginAttempts = 10
这是对的吗?
我已经习惯了来自C的所有大写字母,例如MAXIMUM_NUMBER_OF_LOGIN_ATTEMPTS
,但我想默认Swift惯例。
答案 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)
答案 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)
有两种选择。
thisIsMyConstant
。
Option+Click
,则无法分辨是常量还是变量。UIColor.myColor
而不是UIColor.MyColor()
方式。Objective-C
样式kThisIsMyConstant
。由于许多Swift
开发人员都是objc
专家,对于大多数Mac / iOS开发人员来说,这应该是显而易见的。 C
样式THIS_IS_MY_CONSTANT
。 Java
等许多其他语言也使用它。 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查看其声明。