Before you start writing your code, it’s better that you understand how to manage your code and how to make your code scalable.

Image for post
Image for post
Image by Gabriel Sollman from Unsplash

As Uncle Bob said in his book,

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. …


What is Android View Binding and How to simplify its delegation?

Image for post
Image for post

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.

What is View Binding?

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.

Why do we need it?

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. …


No more generated classes, more simplicity, more KO[TL]IN :D

Image for post
Image for post

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.

The reason why to move from Dagger2 to Koin

Seperti yang dikatakan di websitenya, Koin adalah:

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. …


Yaps, sedikit cerita tentang bagaimana penerapan Clean Architecture di Android. Sample project menggunakan Kotlin.

Image for post
Image for post
Image from picjumbo_com on Pixabay

What is Software Architecture?

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.

Why we should concern about that?

Pertanyaan yang paling common dikalangan para developers, tapi masing-masing dari mereka memiliki pendapatnya sendiri-sendiri. …


Bagi para developer android yang familiar dengan Dependency Injection, pasti pernah dengar dengan yang namanya Dagger. Nah ini ada Injection baru di Kotlin, namanya Koin.

Image for post
Image for post
Image from rafacovo from Storyblocks

Baru rilis versi stablenya 1.0 ditanggal 17 September 2018, dan 2 minggu setelahnya sudah ada versi barunya, yaitu 1.0.1.

Gradle Setup

Tambahkan library Koin di app/build.gradle:

repositories {
jcenter()
}

dependencies {
// .........
// Koin for Android
implementation 'org.koin:koin-android:1.0.1'
}

DSL First, Yeay!!!

Koin ini dibuat dengan memanfaatkan fitur DSL di Kotlin. Seperti yang dikatakan oleh Arnaud Giuliani (Project Lead of Koin):

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/data
  • get— mengambil data yang dideklarasikan didalam suatu class. …


Sedikit cerita tentang bagaimana memulai unit testing di Kotlin menggunakan Library MockK.io dari Oleksiy Pylypenko. Sulit gak sih, atau lebih tepatnya ribet gak sih memulai unit testing di Kotlin ini?

Image for post
Image for post
Image from Ryan McGuire on Pixabay

Penting/Perlu gak sih membuat Unit Testing itu?

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.

What is MockK?

Seperti yang dikatakan oleh Oleksiy Pylypenko diartikelnya,

It is a new open source library (github repository) focused on making mocking in Kotlin great.

How to Implement it?

Tambahkan di app/build.gradle Anda:

testImplementation "io.mockk:mockk:1.8.7"

How to use MockK?

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. …


Image for post
Image for post

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.

What is VIPER and why we use it?

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. …


Image for post
Image for post

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.

Sebelum kita mulai, kita perlu tahu apa itu DSL (domain-specific language)?

kata Wikipedia tentang apa itu DSL adalah:

A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains.

Seperti penjelasan diatas, pada dasarnya DSL adalah bahasa yang digunakan pada satu bagian tertentu dari suatu aplikasi, tak seperti GPL (contohnya: Kotlin atau Java).

Advantage using DSL in Kotlin

Sebenernya kenapa kita harus buat DSL, apa untungnya? …

About

Yoga C. Pranata

Mobile Engineer at eFishery

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store