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


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

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


Apa itu Android View Binding dan bagaimana cara menyederhanakan delegasinya?

View Binding adalah bagian dari Android Jetpack. View Binding dikenalkan saat Android Talk di Google IO/19. Ayo kita pelajari lebih dalam.

Apa itu View Binding?

Jika dilihat dari halaman dokumentasi android, View Binding adalah:

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.

Dengan…


Sebelum ngoding, ada baiknya kalian perhatikan bagaimana cara mengelola baris kode kalian dengan baik.

Image by Gabriel Sollmann from Unsplash
Image by Gabriel Sollmann from Unsplash
Image by Gabriel Sollmann from Unsplash

Seperti pernyataan Uncle Bob berikut ini:

Untuk lebih memahami apa yang Uncle Bob katakan, bayangkan kita sedang berada di dalam sebuah perpustakaan, dan kita sedang mencari buku. Jika perpustakaan menyortir dan mengkategorikan buku — buku mereka dengan baik, kita akan menemukan buku yang kita cari dengan lebih cepat.

Menulis kode sama halnya seperti menulis buku, jika kalian ingin membuat sebuah aplikasi yang bagus, kalian harus tahu bagaimana caranya menulis kode yang bersih dan rapi. Jika…


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

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…


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

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


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


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…


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…

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