枚举规范

 

背景

随着团队扩大,人员增多。需要统枚举规范
 

规范

1.枚举以YP开头,以Enum结尾
2.如果在其他类、结构体等地方也需要用到某个枚举,建议设计成全局枚举,反之就设计成局部枚举

全局枚举

全局枚举统一存放到YPEnumTypeService这个类里面
1.每个枚举类型需要写上简要描述
 
///测试枚举
enum LCTestEnum: Int, CustomStringConvertible {}
 
 
2.每个枚举值都写上注释
///枚举1描述
case test1 = 1
 
 
3.可以遵守CustomStringConvertible协议实现 description
var description: String {
switch self {
case .test1:
return "test1我的值是1"
case .test2:
return "test2我的值是10086"
case .test3:
return "test3我的值是20099"
case .test4:
return "test4我的值是40666"
}
}
 
 
4.可以写一些方法来获取需要的枚举。
///全局枚举
enum YPEnumTypeService{
 
///测试枚举
enum YPTestEnum: Int, CustomStringConvertible {
 
///枚举1描述
case test1 = 1
///枚举2描述
case test2 = 10086
///枚举3描述
case test3 = 20099
///枚举4描述
case test4 = 40666
 
var description: String {
switch self {
case .test1:
return "test1我的值是1"
case .test2:
return "test2我的值是10086"
case .test3:
return "test3我的值是20099"
case .test4:
return "test4我的值是40666"
}
}
 
///可以写一些方法来获取想要的枚举
static func getSomeEnueTypes() -> [YPTestEnum] {
return [.test2,.test3]
}
 
///可以传入指定的值初始化枚举,如果失败可以返回一个默认的枚举值
static func initWith(rawValue: Int) -> YPTestEnum {
if let enumType = YPTestEnum.init(rawValue: rawValue){
return enumType
}else {
return YPTestEnum.test1
}
}
}
}
 

使用举例

let test1 = YPEnumTypeService.YPTestEnum.test1
let test2 = YPEnumTypeService.YPTestEnum.initWith(rawValue: 222)
let test3 = YPEnumTypeService.YPTestEnum.initWith(rawValue: 20099)
let testTypes = YPEnumTypeService.YPTestEnum.getSomeEnueTypes()
print("=====start====")
print("test1===\(test1)====原始值=\(test1.rawValue)")
print("test2===\(test2)")
print("test3===\(test3)====原始值=\(test3.rawValue)")
print("testTypes===\(testTypes)====count=\(testTypes.count)")
 
 
打印结果
 

 

局部枚举

局部枚举用 extension 来扩展

建议局部枚举都写在最后
 
 
///xxx类
class YPFactoryResumeListVC {}
 
//MARK: - xxx私有枚举
extension YPFactoryResumeListVC {
///测试私有枚举
enum YPPrivateEnum: String {
///私有枚举1
case privateOne
///私有枚举2
case privateTwe
}
}

 

posted @ 2022-02-07 14:34  super1250  阅读(225)  评论(0编辑  收藏  举报