16 tips pengembangan untuk android di Kotlin. Bagian 3

Halo lagi! Untuk mengantisipasi dimulainya kursus dasar tentang pengembangan Android , kami membagikan bagian akhir dari artikel β€œ16 tips pengembangan untuk android dalam bahasa Kotlin”.




Baca bagian pertama
Baca bagian kedua

LATEINIT


Salah satu fitur utama Kotlin adalah komitmennya terhadap keamanan nol. Pernyataan lateinit menyediakan cara mudah untuk memastikan nol keamanan dan menginisialisasi variabel sesuai kebutuhan Android. Fitur ini hebat, namun, Anda harus terbiasa dengannya setelah bekerja di Jawa. Satu gagasan adalah bahwa bidang tersebut segera dideklarasikan dengan kemampuan menjadi nol:

var total = 0 var toolbar: Toolbar? = null 


Fungsi bahasa ini dapat menyebabkan kesulitan saat bekerja dengan tata letak Android, karena kami tidak tahu cara mendeklarasikan tampilan sebelum tata letak dinyatakan, karena tidak jelas di mana mereka akan ada di Activity atau Fragment . Ini dikompensasi oleh tes tambahan untuk kemungkinan nilai nol di setiap tempat kami berinteraksi, tetapi yang ini masih wasir. Oleh karena itu, lebih baik menggunakan pengubah lateinit :

 lateinit var toolbar: Toolbar 

Sekarang, sebagai pengembang, Anda tidak boleh merujuk ke Bilah Alat sampai benar-benar diinisialisasi. Ini berfungsi baik ketika digunakan bersama-sama dengan perpustakaan seperti Butter Knife :

 @BindView(R.id.toolbar) lateinit var toolbar: Toolbar override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) ButterKnife.bind(this) //       toolbar toolbar.setTitle("Hello There") } 

Jenis Keamanan


Beberapa konvensi Android memerlukan pengetikan yang aman karena pengetikan yang teratur tidak mencegah kesalahan kode. Sebagai contoh, cara khas untuk membuat fragmen dalam tindakan melibatkan memeriksa melalui FragmentManager untuk memastikan bahwa itu sudah ada. Dan hanya jika tidak, Anda membuatnya dan menambahkannya ke tindakan. Saat Anda pertama kali mengetik di Kotlin, Anda bisa menerapkan ini sebagai berikut:

 var feedFragment: FeedFragment? = supportFragmentManager .findFragmentByTag(TAG_FEED_FRAGMENT) as FeedFragment      .  as     ,     .   : var feedFragment: FeedFragment? = supportFragmentManager .findFragmentByTag(TAG_FEED_FRAGMENT) as? FeedFragment if (feedFragment == null) { feedFragment = FeedFragment.newInstance() supportFragmentManager.beginTransaction() .replace(R.id.root_fragment, feedFragment, TAG_FEED_FRAGMENT) .commit() } 

LEVERAGING LET


Leveraging let memungkinkan Anda untuk mengeksekusi blok jika nilai objek tidak nol. Ini memungkinkan Anda untuk menghindari cek nol dan membuat kode lebih mudah dibaca. Di Jawa, tampilannya seperti ini:

 if (currentUser != null) { text.setText(currentUser.name) }   Kotlin   : user?.let { println(it.name) } 

Kode ini jauh lebih mudah dibaca, ditambah lagi secara otomatis membuat variabel dengan nilai non-nol tanpa risiko nol itu.

SNULLOREMPTY | ISNULLORBLANK


Kami harus memeriksa bidang berkali-kali selama pengembangan aplikasi Android. Jika Anda mengelola ini tanpa menggunakan Kotlin, Anda mungkin tahu tentang kelas TextUtils di Android. Kelas TextUtils adalah sebagai berikut:

 if (TextUtils.isEmpty(name)) { //    } 

Dalam contoh ini, Anda akan melihat bahwa pengguna dapat menetapkan bahkan spasi saja sebagai nama pengguna, dan ia akan lulus ujian. isNullOrEmpty dan isNullOrBlank dibangun ke dalam bahasa Kotlin, menghilangkan kebutuhan untuk TextUtils.isEmpty ( someString ) dan memberikan manfaat tambahan dengan memeriksa hanya ruang. Jika perlu, Anda dapat menggunakan sesuatu seperti ini:

 //       ... if (number.isNullOrEmpty()) { //     } //  ... if (name.isNullOrBlank()) { //     } 

Memeriksa kebenaran mengisi kolom sering ditemukan ketika pendaftaran diperlukan dalam aplikasi. Metode bawaan ini bagus untuk memeriksa bidang dan memperingatkan pengguna jika ada sesuatu yang salah. Untuk pemeriksaan yang lebih kompleks, Anda dapat menggunakan metode ekstensi, misalnya, untuk alamat email:

 fun TextInputLayout.isValidForEmail(): Boolean { val input = editText?.text.toString() if (input.isNullOrBlank()) { error = resources.getString(R.string.required) return false } else if (emailPattern.matcher(input).matches()) { error = resources.getString(R.string.invalid_email) return false } else { error = null return true } } 

Kiat untuk Mahir


Tahukah Anda bahwa Anda dapat menggunakan ekspresi lambda untuk membuat kode yang lebih bersih dan lebih ringkas?

Misalnya, ketika bekerja di Jawa, biasanya memiliki kelas pendengar yang sederhana, seperti:

 public interface OnClickListener { void onClick(View v); } 

Fitur khas Kotlin adalah ia melakukan konversi SAM (Metode Abstrak Tunggal) untuk kelas Java. Pendengar klik di Jawa yang terlihat seperti:

 textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // -  } });  Kotlin     : textView.setOnClickListener { view -> // -  } 

Anehnya, konversi semacam itu tidak dimungkinkan untuk antarmuka SAM yang dibuat di Kotlin. Ini mungkin mengejutkan dan bahkan sedikit mengecewakan pengguna Kotlin baru. Jika antarmuka yang sama didefinisikan di Kotlin, pendengar akan terlihat seperti ini:

 view.setOnClickListener(object : OnClickListener { override fun onClick(v: View?) { // -  } }) 

Untuk mempersingkat kode tersebut, Anda dapat menulis pendengar Anda ke kelas sebagai berikut:

 private var onClickListener: ((View) -> Unit)? = null fun setOnClickListener(listener: (view: View) -> Unit) { onClickListener = listener } //     onClickListener?.invoke(this) 

Ini akan mengembalikan Anda ke sintaks lambda sederhana yang memungkinkan konversi SAM otomatis.

Kesimpulan


Saya mengumpulkan hacks kehidupan paling berguna dari semua yang saya pelajari sejak saya menjadi tertarik pada bahasa Kotlin. Saya harap pengetahuan tentang tips ini akan sangat membantu Anda dalam mengembangkan proyek Anda sendiri.

Itu saja. Sampai jumpa di lapangan !

Source: https://habr.com/ru/post/id481010/


All Articles