POJO字段声明,设置为初始值或null
POJO field declaration, set to init value or null
在我的 POJO 中,我通常这样声明字段
class SampleModel {
var field1: String? = null
var field2: Int? = null
<more fields here>
}
如果我这样声明,我将需要检查该字段是否为空。
但是如果像这样:
class SampleModel {
var field1 = ""
var field2 = 0
<more fields here>
}
我可以直接用
使用哪个声明重要吗?
比如内存、性能或任何可以做的好事?
假设我有 100 个字段。
然后我使用 Moshi 或 Gson 作为反序列化器。
最终,除了性能考虑之外,还有代码质量。如果在您的用例中这些字段实际上永远不会为空,那么我就不会使用可为空的类型。您是在强迫自己做额外的工作(尽管 Kotlin 使它更容易一些)来满足您认为不可能的场景?
另一边;如果序列化中的某个字段在这种情况下丢失,您可能不会立即捕获它,因为 class 中的字段具有默认值。如果您对所提供的数据有信心,这应该不是问题。
IMO,当您在这两种方法之间进行选择时,不应考虑内存和性能。这取决于您希望 class 的行为方式。具有默认值(方法 2)或 null(方法 1)。当您需要处理此 class.
的逻辑时,这很重要
在我的 POJO 中,我通常这样声明字段
class SampleModel {
var field1: String? = null
var field2: Int? = null
<more fields here>
}
如果我这样声明,我将需要检查该字段是否为空。
但是如果像这样:
class SampleModel {
var field1 = ""
var field2 = 0
<more fields here>
}
我可以直接用
使用哪个声明重要吗? 比如内存、性能或任何可以做的好事?
假设我有 100 个字段。 然后我使用 Moshi 或 Gson 作为反序列化器。
最终,除了性能考虑之外,还有代码质量。如果在您的用例中这些字段实际上永远不会为空,那么我就不会使用可为空的类型。您是在强迫自己做额外的工作(尽管 Kotlin 使它更容易一些)来满足您认为不可能的场景?
另一边;如果序列化中的某个字段在这种情况下丢失,您可能不会立即捕获它,因为 class 中的字段具有默认值。如果您对所提供的数据有信心,这应该不是问题。
IMO,当您在这两种方法之间进行选择时,不应考虑内存和性能。这取决于您希望 class 的行为方式。具有默认值(方法 2)或 null(方法 1)。当您需要处理此 class.
的逻辑时,这很重要