gpt4 book ai didi

arrays - 在哪里放置对结构数组进行操作的代码?

转载 作者:搜寻专家 更新时间:2023-11-01 07:17:57 25 4
gpt4 key购买 nike

如果我有一个结构和一些处理这个结构的数组的代码,应该把这个代码放在哪里?

struct Thing {
var id : String
let type : ThingType
}

things:[Thing]?

我有代码从服务器中检索值,该服务器返回 100 Thing 的数组。代码应该去哪里?

我目前已将其定义为 Struct 的静态函数,但如果有约定,我想遵循约定。

最佳答案

从服务器检索 Thing 实例的函数最肯定不应该是 Thing 的成员。

最好创建一个声明函数的新协议(protocol),如下所示:

protocol ThingProvider {
func fetchThings() -> [Thing]
}

和一个符合类型:

class DataBaseThingProvider: ThingProvider {

init() {
// open database connection
}

deinit() {
// close database connection
}

func fetchThings() -> [Thing] {
// fetch Things from database
}
}

通过这种方式,您可以通过换出您使用的具体提供程序类来更改您使用的提供程序(Firebase、Parse、SQLite、CoreData、JSON、CSV 等),所有其他代码可以保持不变。

它还使您的代码更易于测试,因为您可以轻松构建模拟提供程序,从而将您的测试与生产后端分离。

class MockThingProvider: ThingProvider {

func fetchThings() -> [Thing] {
return [
Thing(id: "MockThing1", type: thingType1),
Thing(id: "MockThing2", type: thingType2),
Thing(id: "MockThing3", type: thingType3)
]
}
}

关于arrays - 在哪里放置对结构数组进行操作的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40895094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com