我见过有人用Struct这样声明常量文件:
方法1:
struct Constants {
struct UserInfoParam {
static let userName = "user_name"
static let userID = "user_id"
}
}
并这样称呼:
print(Constants.UserInfoParam.userName)
方法2:有些人直接创建一个Swift文件,并简单地声明变量,例如:
import Foundation
let userName = "user_name"
let userID = "user_id"
并简单地这样称呼它:
print(userID)
我想知道哪种方法最适合代码质量和其他编码方面。有人可以澄清一下吗?在此先感谢。
编码风格取决于人与人,因此在这里它也取决于您和您的要求。
例如,使用方法1,您可以对常量进行分类。检查,
struct Constants {
struct UserInfoParam {
static let userName = "user_name"
static let userID = "user_id"
}
struct API {
static let api1 = "api1"
static let api2 = "api2"
}
struct AlertMessages {
static let NoDataFound = "No Data Found."
static let InternetError = "Check internet connection."
}
}
在以上方法中,我个人不希望使用Constants结构,因为它只是增加了结构层次。
所以我确实喜欢这个,
struct UserInfoParam {
:
}
struct API {
:
}
struct AlertMessages {
:
}
现在无论何时需要,我都只写AlertMessages.NoDataFound
而不是Constants.AlertMessages.NoDataFound
。这两种方法都是正确的,您可以尝试任何人。
但是当您谈论Approach2时,您可以将其用于一些常规常量。
例如
let Base_URL = "Base URL"
let ItunesAppId = "ID"
依此类推。
这些对象全局使用,即使在Constants
结构中也是如此。这些var不属于任何类别。
[通常,开发人员通过这些方式进行编码。
这是一个样式问题,但是我更喜欢使用枚举。您也可以使用结构。
enum Constant {
enum APIKey {
static let nasa = "jfkdafjkafdjkafda"
static let usgs = "1234567890987654321"
}
}
let nasaAPIKey = Constant.APIKey.nasa
如果没有静态let声明就可以得到,例如CaseIterable。这取决于您。
enum Constant {
enum APIKey: String, CaseIterable {
case nasa = "jfkd;afjka;fdjkafda"
case usgs = "1234567890987654321"
}
}
let nasaAPIKey = Constant.APIKey.nasa.rawValue