Bertemu dengan bahasa Kotlin untuk pertama kalinya setelah lama bekerja dengan Java, saya kembali ke pemikiran bahwa null-safety dapat berguna dan, secara umum, variabel tanpa null adalah primitif, tetapi saya sendiri tidak menyadarinya. saya t.
Bagaimana itu memanifestasikan dirinya:
Tidak nyaman bekerja dengan variabel dan bidang, yang tidak boleh memiliki nol. Yah, saya bahkan tidak mengerti bagaimana sesuatu tidak bisa nol.
Tidak nyaman untuk bekerja dengan tipe nullable. Ya ampun?: !!
Secara umum, waktu berlalu, perlahan-lahan saya mulai terbiasa dengan kenyataan bahwa nol mungkin tidak ada, saya bahkan mencoba melakukan sesuatu yang menurut saya idiomatik: nilai default dalam bentuk objek ... Secara umum, semua ini membuat saya depresi dan saya sangat ingin menulis lagi di Jawa, karena saya terbiasa hidup dengan nol. Seiring berjalannya waktu, saya sudah mulai hidup normal dengan Kotlin's not nullable, sebagai teman suatu hari saya kembali ke Jawa ... Dan setelah beberapa saat saya menyadari satu hal:
Ketika saya bekerja dengan kode lawas (yah, ini semua kode yang umumnya ditulis), maka saya tidak mengerti di mana itu bisa nol dan di mana tidak, apa yang membuat saya melakukan peralihan konteks dari menerapkan logika bisnis ke mencari tahu : bisa ada nol?
Pertimbangkan sintetis: Kami memiliki entitas nomor telepon dengan bidang: nomor, kode kota internasional dan awalan (baik, +7, +3, dll.), Itu ditulis sebelum kami, ada pemetaan ke database, di umum, semuanya sesuai dengan kanon yang berdarah. Untuk bisnis, semua 3 bidang nomor telepon harus.
Jika saya di Jawa, maka ketika bekerja dengan entitas ini, saya memiliki banyak opsi untuk menggunakannya:
Gunakan apa adanya, tanpa memikirkan apa yang salah dengan null (produksi akan mengetahuinya jika kami memperbaiki bug)
Masuk ke database dan lihat batasannya, sehingga memastikan bahwa null tidak ada di sana dan Anda dapat menggunakan entitas ini dengan aman tanpa pemeriksaan.
Dengan anotasi @NotNull di tempat , tekan Ctrl + Q untuk melihat deskripsi.
Proses semua bidang, dengan asumsi nol bisa ada di mana-mana.
Tulis kode Anda sendiri, lalu tangani potensi nol.
Anda masih bisa memikirkan opsi ...
, , , 5 - , . , NPE.
:
null .
null.
, .
, Java , : , , , !! ?:
Nah, dan sekali lagi tentang properti keselamatan nol itu sendiri: ini bukan hal yang teknis, melainkan tentang bisnis, jika dalam bisnis saya nilai apa pun tidak boleh nol, jadi biarkan itu jatuh pada tahap awal, daripada hidup dengan beberapa semacam nol...