As Uncle Bob said in his book,
You are reading this “article” for two reasons. First, you are a programmer. Second, you want to be a better programmer. — Robert C. Martin
Like what he said, imagine that you are in a library, and you are looking for some books. If the library sorted and categorized their books, you will find your books faster. In addition, the cool interior design & architecture will make you feel comfortable inside the library while you are searching for your books.
Just like writing books, if you want to build something great, you have to know how to write and organize your code neatly. If you have team members or someone else that has your (legacy) code, they just need to see the variable names or packages or classes and they will understand right away. They don’t need to say “F**k” this code and start it again from zero. …
View Binding is part of Android Jetpack. View Binding was introduced at the Android Talk at Google IO/19. Let’s learn more about this.
As said on their developer’s page,
View binding is a feature that allows you to more easily write code that interacts with views. Once view binding is enabled in a module, it generates a binding class for each XML layout file present in that module. An instance of a binding class contains direct references to all views that have an ID in the corresponding layout.
In most cases, view binding replaces findViewById
.
When we use findViewById
, we need to declare the view variable for x times we need to use it. It makes a lot of boilerplate code inside your view Activity/Fragment. That is why View Binding came to provide a good way to access all views with only initializing one variable. …
Dari artikel saya sebelumnya, yang membahas tentang Koin, telah dijelaskan kalau Koin ini adalah DSL first dependency.
Untuk contoh migrasi Dagger2 ke Koin, saya ambil sample project FootballClub dari artikel saya sebelumnya yang membahas tentang Android Clean Architecture, aplikasinya dibangun menggunakan Kotlin + Dagger2.
Seperti yang dikatakan di websitenya, Koin adalah:
A pragmatic lightweight dependency injection framework for Kotlin developers. Written in pure Kotlin using functional resolution only: no proxy, no code generation, no reflection!
and yep, gak ada lagi yang namanya generated code/classes, seperti yang bisa kalian lihat digambar, saat kita membuat aplikasi menggunakan Dagger2, dia akan selalu membuat generated classes untuk injectionnya. …
Arsitektur Aplikasi dari setiap perusahaan atau setiap developers team pasti berbeda-beda, tapi dari setiap arsitektur memiliki tujuan yang sama, yaitu:
Arsitektur yang disepakati bersama ini memudahkan tim maupun developers lain (terutama yang baru masuk sebagai team member) bisa membaca codingan maupun structure project atau class yang telah dibuat sebelumnya. Karena telah dibuat kesepakatan tentang arsitektur apa yang dipakai, biasanya memudahkan Technical Writer untuk membuat documentation setiap project atau aplikasi yang dibuat.
Pertanyaan yang paling common dikalangan para developers, tapi masing-masing dari mereka memiliki pendapatnya sendiri-sendiri. …
Baru rilis versi stablenya 1.0 ditanggal 17 September 2018, dan 2 minggu setelahnya sudah ada versi barunya, yaitu 1.0.1.
Tambahkan library Koin di app/build.gradle:
repositories {
jcenter()
}
dependencies {
// .........
// Koin for Android
implementation 'org.koin:koin-android:1.0.1'
}
Koin ini dibuat dengan memanfaatkan fitur DSL di Kotlin. Seperti yang dikatakan oleh Arnaud Giuliani (Project Lead of Koin):
Koin is a DSL first dependency injection framework.
Kalian hanya perlu mengingat 4 hal dalam penerapannya:
module
— mendeklarasikan semua komponen didalam fungsi ini.single
— mendeklarasikan singleton untuk suatu tipe data.factory
— mendeklarasikan sebuah factory untuk suatu class/dataget
— mengambil data yang dideklarasikan didalam suatu class. …Banyak yang bilang kalau kita buat Unit Testing di aplikasi kita, berarti aplikasi kita sudah bisa dibilang free bugs, I don’t think so.
Dengan adanya Unit Testing bukan berarti menghilangkan peran Manual Testing. Karena User aplikasi kita adalah Manusia, which mean bukan robot. Jadi peran Unit Testing disini adalah meminimalisir bugs dan memastikan function maupun method yang kita buat sudah sesuai atau belum sebagaimana mestinya.
Seperti yang dikatakan oleh Oleksiy Pylypenko diartikelnya,
It is a new open source library (github repository) focused on making mocking in Kotlin great.
Tambahkan di app/build.gradle Anda:
testImplementation "io.mockk:mockk:1.8.7"
Saat kita membuat sebuah Unit Test dengan cara stubbing atau mocking, inti yang dimaksud adalah mengisolasi suatu fungsi kedalam suatu komponen, yang disebut System Under Test (SUT) dari Dependent On Components (DOC) mereka. …
Sebagai developer khususnya developer Android, pasti kalian pernah ketemu (minimal pernah denger) arsitektur MVVM, MVP, maupun Clean Architecture nya Uncle Bob. Tujuan dari masing-masing arsitektur tersebut adalah supaya code kita tetap clean, maintainable, mudah dipahami oleh yang lain, dan yang paling penting menghindari situasi Massive-View-Controller.
VIPER itu sendiri adalah singkatan dari View Interactor Presenter Entity Router yang merupakan classes yang memiliki tugasnya masing-masing, sesuai dengan prinsip Single Responsibility Principle.
Saya biasanya menggunakan arsitektur MVP saat membuat aplikasi Android, tapi kelemahannya saat aplikasi tersebut semakin besar, bussiness logic maupun methods yang sudah kita buat di presenter jadi semakin besar dan semakin susah untuk di maintain. …
Terdapat banyak sekali fitur — fitur di Kotlin yang bisa kalian explore. Salah satu hal keren yang bisa dilakukan adalah membuat/mendesain sendiri DSL. Sehingga developers bisa lebih fokus untuk membuat code yang lebih mudah dibaca.
kata Wikipedia tentang apa itu DSL adalah:
Seperti penjelasan diatas, pada dasarnya DSL adalah bahasa yang digunakan pada satu bagian tertentu dari suatu aplikasi, tak seperti GPL (contohnya: Kotlin atau Java).
Sebenernya kenapa kita harus buat DSL, apa untungnya? …
About