Ios 用变异函数重构大型Swift结构
我正在尝试用Swift简化一个巨大的文件,我不确定什么是最好的方法。这可能是一个非常幼稚的问题,因为我对斯威夫特还是相当陌生:) 为了简单起见,假设我有一个Ios 用变异函数重构大型Swift结构,ios,swift,refactoring,Ios,Swift,Refactoring,我正在尝试用Swift简化一个巨大的文件,我不确定什么是最好的方法。这可能是一个非常幼稚的问题,因为我对斯威夫特还是相当陌生:) 为了简单起见,假设我有一个Userstruct,在其中我可以调用大量不同的setupModeA,setupModeB等等,根据不同的条件调用: struct用户{ var currentMode:String 变异函数setupModeA(){ currentMode=“A” } 变异函数setupModeB(){ currentMode=“B” } //对于每种模式
User
struct,在其中我可以调用大量不同的setupModeA
,setupModeB
等等,根据不同的条件调用:
struct用户{
var currentMode:String
变异函数setupModeA(){
currentMode=“A”
}
变异函数setupModeB(){
currentMode=“B”
}
//对于每种模式,依此类推
}
我希望能够将setupMode*()
函数及其关联的助手函数放在一个单独的文件中,以便于阅读,因为大多数时候我只关注一种模式
我在想:
struct ModeA{
变异函数设置(){
//从那里改变模式
}
}
但是我不知道如何简单地将用户
信息传递和变异到这个新结构。
我想:
- 在
结构中使用user
变量初始化一组user
对象,并在init上传递ModeX
,但这会产生奇怪的行为user
- 在
structs上使用静态方法,但是我不太确定如何变异ModeX
User
- 采取一种更实用的方法&不改变
,而是每次克隆并重新分配它。。。这可能会起作用,但由于我的代码是非常顺序的,它感觉像是在白白增加复杂性/内存使用用户
- 从结构转换到类,希望它能给我其他的选择。。。但我担心一切都会破裂
- 非常复杂的事情,感觉太奇怪和不直观,这里不能提及:)
任何指针都将不胜感激。您可以将函数移到扩展名(可以在单独的文件中)
扩展名用户{mutating func setupModeA(){…}
。也许这只是您的简化示例,但为什么不使用一个将模式作为参数的变异函数?也许您可以对模式进行枚举?@JoakimDanielson extensions可能是个好主意,我不知道!是的,这是一个简化的示例,在美国,每个变异函数都在改变几十个参数ERI如果您使用特定的结构来设置每个模式,那么将接受用户并返回用户的公共方法设置为静态(因此不会发生变化),struct mode设置为静态设置(\uuser:user)->用户
,只需创建inparameter@JoakimDanielson谢谢你的帮助!你会建议使用多结构还是扩展结构?这取决于不同模式之间有多少通用代码,但我觉得使用多结构作为工厂是一种更干净的解决方案。