2017-10-26 5 views
0

に設定され、私は通常、私はこのように宣言すると、私はフィールドがnullであるかどうかをチェックする必要があります。このPOJOのフィールド宣言、初期化値または私の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を使用します。

+0

perfの場合、空の文字列のような値は内部で保持され、何もコストはかかりません。 コードに関しては、あなたがしようとしていることと、本当にデフォルト値が必要なのかによって異なります。非null型のコンストラクタを持つデータクラスを作成し、MoshiのKotlinJsonAdapterを使用してそれらのJSONフィールドを要求することができます。 –

答えて

1

パフォーマンス上の考慮事項を超えても、コードの品質です。あなたのユースケースでフィールドが実際にはnullにならない場合は、null可能な型は使用しません。あなたはあなたが言うことができないと思われるようなシナリオに対応するために、余分な仕事をすることを強制されています(Kotlinはやや簡単ですが)。

反対側。このシナリオでシリアル化されたフィールドが欠落していた場合、クラス内のフィールドにデフォルト値が設定されているため、すぐにキャッチしないことがあります。これは問題ではありませんが、データの提供に自信がある場合は、

+0

私の質問のどの部分が不可能なことを言っていますか? – iori24

+0

可能であれば、私は2番目のオプションを全く考慮しない理由は何もありませんか? nullが可能な場合は、null可能な型を持たなければなりません。また、null可能な型にデフォルト値を置くことによって利点が得られません。 – dillius

1

IMOでは、これら2つの方法のどちらを選択する場合でも、メモリとパフォーマンスを考慮しないでください。クラスの振る舞いに依存します。デフォルト値(アプローチ2)またはヌル(アプローチ1)。このクラスのロジックを処理する必要があるときは重要です。

関連する問題