Kotlin の null 安全性。キラー機能について考えた

Javaでの長い作業の後、初めてKotlin言語に出会い、null-safetyが有用であり、一般的にnullのない変数はプリミティブであるという考えに背を向けましたが、私自身は気づきませんでしたそれ。





それがどのように現れたか:





  1. null を使用できない変数やフィールドを操作するのは便利ではありません。うーん、どうやってヌルにできないのかすら理解できなかった。





  2. null 許容型を操作するのは便利ではありません。おいおい ?: !!





一般に、時間が経過し、ゆっくりとヌルが存在しない可能性があるという事実に慣れ始め、私の意見では何か慣用的なことをしようとさえしました.オブジェクトの形でのデフォルト値...一般的に、このすべてnull で生活することに慣れていたので、私は再び Java で書きたいと思っていました。時が経つにつれて、私はすでに Kotlin の null 値を許容しない状態で普通に生活し始めていました。ある日、友人として Java に戻りました...





レガシー コード (まあ、これが一般的に書かれているすべてのコードです) で作業する場合、null にできる場所とできない場所がわかりません。 : null はありますか?





合成を検討してください: フィールドを持つ電話番号エンティティがあります: 番号、国際都市コード、プレフィックス (まあ、+7、+3 など)、それは私たちの前に書かれており、データベースへのマッピングがあります。一般的に、すべては血まみれの規範に従っています。ビジネスの場合、電話番号の 3 つのフィールドすべてが必要です。





私が Java を使用している場合、このエンティティを使用する場合、使用方法には多くのオプションがあります。





  1. nullのどこが悪いのかを考えずにそのまま使う(バグを直せば本番で分かる)





  2. データベースにアクセスして制約を確認し、null が存在しないことを確認し、チェックなしでこのエンティティを安全に使用できるようにします。





  3. @NotNull注釈を配置した状態で、Ctrl + Q を押して説明を表示します。





  4. null がどこにでもあり得ると仮定して、すべてのフィールドを処理します。





  5. 独自のコードを記述し、潜在的な null に対処します。





  6. あなたはまだオプションを考えることができます...





, , , 5 - , . , NPE.





:





  1. null .





  2. null.





, .





, Java , : , , , !! ?:





では、null の安全性プロパティ自体についてです。これは技術的なことではなく、ビジネスに関するものです。私のビジネスでは、値を null にすることはできません。ヌルのような...








All Articles