对于要序列化的示例结构Person
:
struct Person {
let firstName: String
let lastName: String
}
我们可以使它符合Encodable
、Decodable
或Codable
协议。我知道我们在Encodable
和Decodable
之间的选择取决于用例(例如,如果我们命中 API 并且不需要解码包含相同类型的响应(,但如果结构既用于编码又用于解码,我们也可以使其符合Codable
。
如果我们需要结构严格用于编码或解码,但不能两者兼而有之,那么从性能的角度来看,仅使用包罗万象的Codable
而不是指定Encodable
/Decodable
一致性是一个坏主意吗?
使用Codable
而不是指定Encodable
/Decodable
的一个明显缺点是另一个程序员可能会将该结构误解为用于编码和解码,而实际上只有两者之一正在发生。但是,如果我对性能非常感兴趣呢?
"性能"没有一个维度。这取决于你的意思。例如,在不需要时添加Encodable
一致性可能会增加二进制文件的大小,从而减慢启动时间。或者它可能微不足道,因为二进制大小与启动时间不是很相关(因为文件是内存映射的(。或者,也许你的意思是编译时性能,其中明确添加自动生成的一致性显然需要一些额外的编译器工作,并且在某些情况下可能会增加类型检查器需要游走的类型海洋,从而减慢速度。
但是对于日常工作,很难想象添加不必要的Encodable
一致性会导致表视图滞后的情况,如果这是您所说的性能。你的"另一个程序员可能会误解"的考虑要重要得多。