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,

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.


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


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.

The reason why to move from Dagger2 to Koin

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…


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:

Discipline of creating such structures and systems

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

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

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


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.


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…

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