RxSwift dan Coroutines di Kotlin - pengembangan ponsel opsional dari AGIMA dan GeekBrains



Pengetahuan itu baik, bagus sekali. Tetapi kita juga perlu latihan agar dapat menggunakan data yang diperoleh, memindahkannya dari status "penyimpanan pasif" ke status "penggunaan aktif". Tidak peduli seberapa bagus pelatihan teoretisnya, dibutuhkan lebih banyak pekerjaan β€œdi lapangan”. Hal tersebut di atas berlaku untuk hampir semua bidang studi, termasuk, tentu saja, pengembangan perangkat lunak.

Tahun ini, GeekBrains, sebagai bagian dari departemen pengembangan ponsel di universitas online GeekUniversity, mulai bekerja dengan agensi interaktif AGIMA, yang timnya adalah pengembang profesional (melakukan proyek beban tinggi yang kompleks, portal perusahaan, dan aplikasi seluler, itu saja). AGIMA dan GeekBrains telah menciptakan pilihan untuk pencelupan mendalam dalam masalah praktis pengembangan aplikasi mobile.

Suatu hari kami berbicara dengan Igor Vedeneev, seorang spesialis iOS, dan Alexander Tizik, yang berspesialisasi dalam Android. Berkat mereka, pilihan pengembangan seluler diperkaya oleh kursus khusus praktis tentang kerangka kerja RxSwift dan coroutine di Kotlin . Pada artikel ini, pengembang berbicara tentang pentingnya setiap arah untuk programmer.

Pemrograman reaktif di iOS menggunakan RxSwift sebagai contoh



Guru opsional Igor Vedeneev: "Dengan RxSwift aplikasi Anda akan terbang"

Informasi apa yang diterima siswa di mata pelajaran pilihan?

Kami tidak hanya berbicara tentang kemampuan kerangka kerja, tetapi juga menunjukkan bagaimana menerapkannya dalam bundel MVVM + RxSwift klasik. Beberapa contoh praktis juga dipertimbangkan. Untuk mengkonsolidasikan data yang diterima, kami menulis aplikasi yang sedekat mungkin dengan kondisi kerja lapangan. Ini akan menjadi aplikasi pencarian musik menggunakan iTunes Search API . Di sana kami akan menerapkan semua Praktik Terbaik, ditambah kami akan mempertimbangkan opsi yang lebih sederhana untuk menggunakan RxSwift dalam paradigma MVC.

RxSwift - mengapa kerangka kerja ini untuk iOS-programmer, bagaimana cara membuatnya lebih mudah bagi pengembang?

RxSwift streamlines bekerja dengan aliran acara dan hubungan antar objek. Contoh paling sederhana dan paling jelas adalah pengikat: misalnya, Anda dapat memperbarui antarmuka dengan hanya menetapkan nilai-nilai baru dalam variabel di viewModel. Dengan demikian, antarmuka menjadi berbasis data. Selain itu, RxSwift memungkinkan Anda untuk menggambarkan sistem dalam gaya deklaratif, yang memungkinkan Anda untuk merampingkan kode dan meningkatkan keterbacaan. Semua ini membantu mengembangkan aplikasi dengan lebih efisien.

Untuk pengembang, pengetahuan tentang kerangka kerja juga merupakan nilai tambah yang baik dalam resume, karena pemahaman tentang pemrograman reaktif, dan terutama pengalaman dengan RxSwift, dihargai di pasar.

Mengapa memilih kerangka kerja ini, dan bukan yang lain?

RxSwift memiliki komunitas terbesar. Artinya, ada lebih banyak peluang bahwa masalah yang dihadapi pengembang telah diselesaikan oleh seseorang. Juga sejumlah besar pengikat di luar kotak. Selain itu, RxSwift adalah bagian dari ReactiveX. Ini berarti ada analog untuk Android, misalnya (RxJava, RxKotlin), dan kolega dapat berbicara bahasa yang sama satu sama lain, meskipun beberapa bekerja dengan iOS, yang lain dengan Android.

Kerangka kerja ini terus diperbarui, bug kecil diperbaiki, dukungan untuk chip dari versi baru Swift ditambahkan, pengikat baru ditambahkan. Karena RxSwift adalah open source, Anda dapat mengikuti semua perubahan. Selain itu, dimungkinkan untuk menambahkannya sendiri.

Di mana harus menggunakan RxSwift?

  1. Binding Sebagai aturan, di sini kita berbicara tentang UI, kemampuan untuk mengubah UI, seolah-olah bereaksi terhadap perubahan data, dan tidak secara eksplisit memberi tahu antarmuka bahwa ini saatnya untuk memperbarui.
  2. Tautkan komponen dan operasi. Segera sebuah contoh. Kami perlu mendapatkan daftar data dari jaringan. Sebenarnya, ini bukan operasi yang sederhana. Untuk melakukan ini, mengirim permintaan, memetakan respons ke berbagai objek, menyimpannya ke database dan mengirimkannya ke UI. Bertanggung jawab untuk melakukan operasi ini, sebagai suatu peraturan, adalah komponen yang berbeda (apakah kita mencintai dan mengikuti prinsip-prinsip SOLID ?). Memiliki alat seperti RxSwift, menjadi mungkin untuk menggambarkan APA yang akan dilakukan sistem, dan BAGAIMANA akan melakukannya - itu akan berada di tempat lain. Karena hal inilah organisasi kode terbaik dicapai dan keterbacaan ditingkatkan. Secara relatif, kode dapat dibagi menjadi daftar isi dan buku itu sendiri.

Coroutine di Kotlin



Guru pilihan Alexander Tizik: "Perkembangan modern membutuhkan sarana teknis modern"

Apa yang akan diajarkan di fakultas GeekBrains sebagai bagian dari kuartal bermerek?

Teori, perbandingan dengan pendekatan lain, contoh praktis di Kotlin murni dan dalam model aplikasi Android. Berkenaan dengan praktik, siswa akan ditunjukkan aplikasi di mana semuanya terkait dengan coroutine. Faktanya adalah bahwa sebagian besar aplikasi adalah komputasi asinkron dan paralel yang berkelanjutan. Tetapi coroutine Kotlin memungkinkan membingungkan, heterogen atau terlalu kompleks dan menuntut dalam hal kode kinerja harus direduksi menjadi gaya tunggal, mudah dimengerti, memperoleh dalam pelaksanaan dan kinerja yang benar.

Kita akan belajar bagaimana menulis kode idiomatik pada coroutine, yang memecahkan masalah praktis dan dapat dimengerti pada pandangan pertama bahkan tanpa pengetahuan mendalam tentang bagaimana coroutine bekerja (yang tidak dapat dikatakan tentang perpustakaan seperti RxJava). Kami juga akan mengerti bagaimana menggunakan konsep yang lebih kompleks, seperti model aktor, untuk menyelesaikan tugas yang lebih kompleks, seperti gudang data dalam konsep MVI.

Omong-omong, lebih banyak berita baik. Sementara opsional sedang direkam, pembaruan dibuat ke perpustakaan Kotlin Coroutines, di mana kelas Flow muncul - analog dari tipe Flowable dan Observable dari RxJava. Pembaruan pada dasarnya membuat fitur coroutine lengkap dari sudut pandang pengembang aplikasi. Benar, masih ada banyak ruang untuk pengembangan: terlepas dari kenyataan bahwa berkat dukungan coroutine di kotlin / asli, sudah dimungkinkan untuk menulis aplikasi multi-platform di Kotlin dan tidak menderita karena tidak adanya RxJava atau analog di Kotlin murni, dukungan untuk coroutine di kotlin / asli belum lengkap. Misalnya, tidak ada konsep aktor. Secara umum, tim Kotlin memiliki rencana untuk membuat dukungan untuk aktor yang lebih kompleks di semua platform.

Kotlin Coroutines - bagaimana mereka membantu pengembang Kotlin?

Coroutine memberikan peluang bagus untuk menulis kode yang dapat dibaca, didukung, dan aman, asinkron, dan "konkurensi". Anda juga dapat membuat adaptor untuk kerangka kerja dan pendekatan asinkron lainnya yang sudah dapat digunakan dalam basis kode.

Apa perbedaan Coroutine dengan stream?

Tim Kotlin menyebut coroutine aliran ringan. Plus, coroutine dapat mengembalikan beberapa nilai, karena, pada intinya, coroutine adalah perhitungan yang ditangguhkan. Itu tidak tergantung langsung pada utas sistem, utas hanya menjalankan coroutine.

Masalah praktis apa yang dapat dipecahkan dengan menggunakan Corutin, yang tidak dapat atau sulit untuk diselesaikan dengan bantuan Kotlin "bersih"?

Tugas asinkron, paralel, "kompetitif" diselesaikan dengan baik dengan bantuan coroutine - apakah itu memproses klik pengguna, pergi ke jaringan atau berlangganan pembaruan dari database.

Di Kotlin murni, tugas-tugas ini diselesaikan dengan cara yang sama seperti di Jawa - dengan bantuan ribuan kerangka kerja, yang masing-masing memiliki pro dan kontra, tetapi tidak ada yang memiliki dukungan di tingkat bahasa.



Sebagai kesimpulan, perlu dikatakan bahwa kedua pilihan (dan kursus utama juga) diperbarui sesuai dengan perubahan kondisi eksternal. Jika pembaruan penting muncul dalam bahasa atau kerangka kerja, guru mempertimbangkan ini dan memodifikasi program. Semua ini memungkinkan Anda untuk mengikuti proses pengembangan, jika saya bisa mengatakannya.

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


All Articles