Belajar iOS Architecture Design : VIP — Clean Swift
Dan hari ini saya belajar Architecture Design baru untuk pengembangan aplikasi iOS.
Desain Asitektur yang biasa digunakan oleh pengembang pemula dalam pengembangan aplikasi iOS adalah MVC (Model-View-Controller). MVC memang bagus dan mudah diterapkan secara cepat namun bukan yang terbaik untuk desain arsitektur pengembangan aplikasi. Salah satu alasannya adalah MVC tidak menyediakan ketahanan yang saat terjadi bug. Pengembang bisa saja terus menerus berputar di dalam kode yang bertumpuk-tumpuk di Controller. Atau mungkin juga bisa di Model bahkan di View. Dan saat penambahan fitur baru, MVC membuat pekerjaan kita menjadi lebih sulit karena melibatkan refactor yang tidak ada habis.
Maka ditawarkanlah VIP — atau lebih dikenal dengan nama Clean Swift, sebagai alternatif bagi MVC. VIP merupakan kepanjangan dari View-Interactor-Presenter dimana merupakan alur yang dilewati saat segala sesuatu yang berhubungan dengan business logic terjadi.
Secara ringkas, VIP merupakan langkah untuk memisahkan setiap kelakuan yang terjadi dalam kode, termasuk business logic menjadi lebih spesifik dan melayani satu tujuan tertentu. VIP memisahkan tujuan-tujuannya dalam kelas-kelas spesifik yang terpisah. Contohnya dalam aplikasi permintaan jasa, maka saat pengguna membuat permintaan baru maka dengan VIP dibuatlah tiga kelas utama yaitu BuatPermintaanBaruViewController, BuatPermintaanBaruInteractor, BuatPermintaanBaruPresenter.
Urutan dalan VIP adalah sebagai berikut :
Program A akan menampilkan sebuah umpan balik berupa string Hallo {nama}, bagaimana kabarmu?
ke layar setelah user memasukkan nama ke dalam text field lalu
- View Controller
- User memasukkan nama ke dalam text field.
- User menekan tombol
tampilkan hasil
- @IBAction untuk tombol tampilkan hasil mengambil text string dalam text field dan mengirimnya ke interactor untuk diolah (business logic)
interactor.lakukanPengolahanInput(string:)
2. Interactor
- Memeriksa apakah string yang dikirimkan oleh View Controller merupakan string kosong atau memiliki nilai?
- Jika string kosong maka memanggil
presenter.tampilkanPeringatanStringKosong()
- Jika string memiliki nilai yang disepakati maka memanggil
presenter.tampikanSalam(nama:)
3. Presenter
- Presenter
tampilkanPeringatanStringKosong()
akan memanggilviewController.updateLabel(string:)
dengan parameternya sendiri “Maaf anda perlu mengisikan nama terlebih dahulu” - Presenter
tampilkanSalam(nama:)
juga akan memanggilviewController.updateLabel(string:)
dan mengisikan parameter “Halonama
, bagaimana kabarmu?”
Dalam aplikasi To-Do-List yang umum, jika menggunakan VIP, kode yang berhubungan dengan business logic akan di kerjakan di interactor dan di update bagaimana hasil di tampilkan melalui presenter. Dimana view bekerja? View hanya bertugas menerima input dari user dan menampilkan hasil tanpa harus mengutak-atik business logicnya.
Perbandingan dengan MVC, jika kode untuk viewController.updateLabel(string:)
dijalankan di @IBAction
lalu menampilkan hasil secara langsung, maka dalam VIP kode tersebut akan melakukannya dengan mekanisme View lalu Interactor lalu Presenter.
Term Clean Swift
Penggunaan nama Clean Swift mungkin disebabkan sesuai dengan tujuan dari dibentuknya desain arsitektur Clean Swift itu sendiri.
Clean Swift yang merupakan implementasi dari Clean Architecture ditujukan agar pengembang dalam menjaga arah pengembangan menjadi lebih mudah dalam pemeliharaan, daur ulang kode (tidak seperti MVC yang membuat kode satu sama lain saling bertumpuk), dan mendukung penambahan fitur-fitur baru tanpa melibatkan refactor besar-besaran pada kode yang sudah ada yang rawan error. Let the code stay clean!
Untuk penjelasan lengkap beserta tutorial resmi, Clean Swift telah meyediakannya untuk anda.