8 min readJul 16, 2019
- Agar memastikan project yang kamu buat terhindar dari segala bentuk warning ataupun error, kamu bisa melakukan inspeksi kode dengan mudah melalui Analyze → Inspect Code.
- Kode yang tidak pernah digunakan baik itu class, method, ataupun variable jika tidak digunakan sebaiknya dihapus. Kamu bisa memanfaatkan Analyze — Code Cleanup untuk melakukannya dengan cepat.
- Selalu perhatikan resources yang tidak pernah digunakan di dalam project karena akan mempengaruhi size APK nantinya. Kamu bisa memanfaatkan fitur Remove Unused Resource untuk menghapus resources yang tidak pernah digunakan.
- Agar kode menjadi lebih rapi kamu bisa menggunakan fitur Reformat Code dengan cara menekan Ctrl + Alt + L / command + options + L.
- Selalu perhatikan impor yang tidak pernah digunakan di dalam project. Kamu bisa menekan tombol Ctrl+Alt+O pada keyboard (Ctrl+Cmd+O pada Mac) untuk menghapus resources yang tidak pernah digunakan.
- Untuk alasan keamaan kredensial, hindari menyematkan sebuah TOKEN API ke dalam sebuah kelas, sebaiknya dipindahkan ke dalam berkas build.gradle seperti berikut:
android {
defaultConfig {
buildConfigField("String", "KEY", '”b650046bf640e7bf7054093854b8d02a"')
}
}
- Untuk mengaksesnya kamu bisa menggunakan properti
val mySuperScretKey = BuildConfig.KEY
- Sebaiknya gunakan header Authorization menggunakan komponen Interceptor milik Retrofit untuk menghindari penulisan kode yang berulang. Referensi https://medium.com/knowing-android/headers-interceptors-and-authenticators-with-retrofit-1a00fed0d5eb
- Kelas object dan variabel konstan didalamnya yang tidak pernah digunakan sebaiknya dihapus.
- Penulisan companion object sebaiknya diletakkan di paling bawah dari sebuah class sesuai dengan konvensi penulisan kode Kotlin.
- Hindari penggunaan findViewById seperti ini. Karena findViewById saat ini sudah kurang relevan dalam penggunaannya. Sebagai gantinya, kamu dapat menggunakan viewBinding yang lebih baik dan lebih aman sebagai ganti findViewById. Referensi : https://kotlinlang.org/docs/coding-conventions.html#class-layout
- Hindari penggunaan anotasi seperti ini. Karena akan menyebabkan Android Lint tidak bisa mendeteksi kode program yang deprecated/usang atau terdapat warning lainnya.
- Parameter yang tidak digunakan sebaiknya diubah menjadi _ (underscore).
- Penerapan method notifyDatasetChanged() saat ini tidak disarankan, untuk kedepannya kamu bisa menggunakan DiffUtils untuk melakukan update data pada RecyclerView. Referensi : https://developer.android.com/reference/androidx/recyclerview/widget/DiffUtil
- Analyze ->Code Cleanup : Untuk menghapus kode yang tidak digunakan atau menyederhanakan source code sesuai dengan convention.
- Refactor ->Remove Unused Resource : Untuk menghapus resource yang tidak pernah digunakan.
- Code ->Reformat Code : Untuk merapikan code termasuk indent dengan cara mengakses menu bar.
- File -> Settings -> Editor -> General -> Auto Import lalu berikan check pada checkbox optimize imports on the fly : untuk mengoptimalkan imports pada project android studio sehingga tidak ada lagi imports yang tidak terpakai di kodemu.
- Sebaiknya untuk membuat layout jangan menggunakan drag and drop di tab design. Ketik pelan -pelan dan pahami source code nya akan membuat kalian jadi programmer masa depan yang hebat.
- Gunakan Library ssp ( ukuran teks ) dan sdp( ukuran konten) untuk ukuran teks dan konten agar dapat support berbagai jenis ukuran layar device.
- Variable atau fungsi yang tidak pernah diakses dari kelas lain sebaiknya dijadikan private.
- Untuk menghindari kebocoran informasi penting, nilai dari base_url, certificate pinning, atau paraphrase bisa diletakkan di dalam build.gradle dengan menggunakan fungsi BuildConfig atau local.properties_url
- Sebaiknya hindari menggunakan properti yang telah deprecated.
- Pastikan untuk menghapus pemanggilan method yang tidak ada dan tidak digunakan agar tidak terdeteksi error oleh android studio.
- Hindari penggunaan magic number, seperti angka ini. Sebaiknya disimpan dalam bentuk constant value agar code mudah dipahami.
- Pesan error sebaiknya tidak menggunakan hardcoded string. Kamu bisa memindahkannya kedalam file strings.xml.
- Hindari penggunaan magic number. Sebaiknya disimpan dalam bentuk constant value agar code mudah dipahami.
- Deklarasi namespace jangan sampai double dideklarasikan 2 kali, jika sudah di definisikan di parentnya. Silakan dihapus saja karena bersifat redundant.
- Gunakan Design Pattern MVVM ( Model, View, View Model ) sehingga dapat mempertahankan data ketika perubahan orientasi layar dari potrait ke landscape dalam keadaan offline, sehingga tidak ngeload data kembali.Gunakan Repository untuk MVVM yang lebih advance agar source code yang kita buat itu lebih bersih dan rapi.
- Cobalah untuk mengelompokkan kelas yang sejenis ke dalam suatu package. Supaya struktur projek lebih rapi & lebih mudah di maintenances kedepannya.
- Sebaiknya untuk strings.xml seharusnya nilai String menggunakan Bahasa Inggris agar dapat ditambahkan fitur Localization agar aplikasi support bhs Inggris dan bhs Indonesia.
- Penggunaan android:configChanges untuk mempertahankan data sangat tidak dianjurkan. Sebaiknya gunakan onSavedInstanceState() atau View Model.
- Gunakan penamaan id yg tepat agar mudah dibaca dari View apa id tersebut. misal pada View Edit Text:edt_username , edt_password,edt_alamat. Kemudian pada View Image: iv_image. Serta pada View TextView: tv_nama, tv_judul, tv_alamat.
- Gunakan BreakPoint untuk mengecek kode yang error dalam suatu Class, kemudian debungging , cek log cat nya . baca error nya yg paling atas, dan kliklink teks yg berwarna biru. Copas error tersebut di Stack Over Flow.
- Gunakan Modularisasi untuk mengelompok ngelompokan source code agar nantinya akan mempermudah proses maintenance dan pengembangan sistem.
- Gunakan library Glide atau Picasso untuk mempermudah dalam menampilkan gambar ke dalam aplikasi dan meminimalisir terjadinyaOut Of Memory.
- Jika menggunakan file drawable yang berukuran besar ( format jpeg atau png) sebaiknya masukkan ke dalam folder drawable-nodpi.
- Simpan warna pada resource colors.xml agar tidak dituliskan secara berulang.
- Jika ingin membuat button yang sudut nya tidak lancip, dan terdapat gradasi warna. Buatlah XML dengan nama bg_button.xml di drawable kemudian ketik kode di bawah ini sesuaikan dengan kebutuhan kalian. Selanjutnya panggil di View Button yang berada di resource layout dengan android:background=”bg_button”
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#0090FF" />
<corners android:radius="50dp" />
<gradient
android:angle="225"
android:centerColor="@color/blueindigo"
android:endColor="@color/blue"
android:startColor="@color/indigo" />
</shape>
- Sebaiknya gunakan asset gambar berformat WebP di drawable, karena WebP lebih baik dibandingkan JPEG, JPG, atau PNG.
- Jika ingin menambahkan animasi , dapat menggunakan asset gambar lottie bertipe JSON. https://lottiefiles.com/
- Penggunaan android:configChanges untuk mempertahankan data sangat tidak dianjurkan. Sebaiknya gunakan onSavedInstanceState() untuk mempertahankan data.
- Jika kalian sudah menerapkan ViewModel sebaiknya mulailah untuk menerapkan data binding agar kode menjadi lebih rapih dan efisien. Untuk berkenalan silahkan ikuti tautan berikut https://developer.android.com/topic/libraries/data-binding
- Mulailah untuk menerapkan konsep Material Design ketika mengembangkan proyek Aplikasi. Anda bisa mengunjungi www.material.io sebagai referensi.
- Untuk kalian programmer Kotlin coba terapkan penggunaan Asynchronous dengan Coroutines.
- Hindari penggunaan double bang operator (!!) saat mengakses nullable type, karena akan memaksa suatu variable menjadi non-null. Dan jika ternyata variable tersebut bernilai null, maka bisa menyebabkan NPE. Pelajari kembali tentang fitur Null Safety. Periksa kembali semua kode Anda dan jangan biarkan satupun operator tersebut tersisa. Anda bisa menggantinya dengan safe calls.
- Pada kelas DetailActivity, pengecekan berikut: if (it.strAwayLineupDefense == null) akan selalu benar karena tipe datanya tidak mengijinkan nilai null (non-null variable)
- pada kelas DetailActivity, fungsi setup() dapat Anda pecah menjadi fungsi-fungsi kecil untuk menghindari kode fungsi yang terlalu panjang dan bersarang terlalu dalam.
- Fungsi dan variable yang hanya diakses dari dalam sebuah class atau file, sebaiknya dijadikan private .
- penulisan nama variabel/parameter/property sebaiknya menggunakan format camelCase.
- penulisan nama fungsi sebaiknya menggunakan format camelCase.
- Child dari ScrollView sebaiknya menggunakan wrap_content untuk attribute layout_height.
- Hindari penggunaan hardcoded text string. Silahkan pindahkan string value ke file strings.xml.
- Biasakan untuk reformat code dan optimized import supaya code lebih rapi dan bersih dari unused import. Windows : Ctrl + Alt + L Ctrl + Alt + O Linux: Ctrl + Shift + Alt + L Ctrl + Shift + Alt + O Mac: Option + Command + L Option + Command + O
- Selalu gunakan versi terbaru dari Kotlin Plugin agar kode yang Anda tuliskan sesuai dengan best practice yang disarankan. Saat ini versi terbaru dari Kotlin Plugin adalah 1.3.61. Silahkan update pada file build.gradle level root atau project.
- Selalu gunakan target Android SDK terbaru. Saat ini versi terbaru dari Android SDK adalah 29.
- Sebaiknya pisahkan logika bisnis dari activity/fragment. Anda dapat mempelajari ulang contoh pemisahan tersebut pada modul menerapkan logika bisnis.
- Untuk memasang listener pada viewholder sebaiknya dilakukan di onCreateViewHolder, sesuai dengan best practice dari developer recyclerviewhttps://www.youtube.com/watch?v=KhLVD6iiZQs&t=2s
- Sebaiknya Dimensi disimpan ke dalam folder dimens.xml agar tidak perlu menuliskan secara berulang.
- Untuk komentar-komentar fungsi yang sudah jelas alangkah lebih baiknya kalau dihapus saja.
- Penggunaan method intent pada class adapter tidak disarankan, sebaiknya gunakan interface agar dapat memanggilnya dari activity.
- Sebaiknya extras string intent di tambahkan dalam const, agar tidak perlu menuliskannya secara berulang.
- Bungkus RelativeLayout dengan ScrollView agar halaman dapat memuat informasi secara keseluruhan.
- Hindari penggunaan hardcoded string , pindahkan ke dalam file strings.xml. Caranya : ALT +Enter+Enter.
- Gunakan parcelable dengan kelas POJO agar tidak perlu mengirimkan data dengan satu per satu dengan nilai String.
- Jangan lupa export ke zip melalui Android Studio agar ukuran file tidak mencapai> 30MB. Anda bisa mengikuti instruksi (File> Export to Zip File …) yang ada di android studio agar ukuran file menjadi <1 MB.
- Dalam penamaan resource, seluruh pemberian penamaan ID dan nama ditulis dalam lorewercase_underscore. contoh : tv_title, iv_image
- Suatu elemen XML haruslah memiliki self-closing tag apabila ia tidak memiliki elemen anak ataupun konten yang lain.
- Setiap nama kelas wajib menggunakan UpperCamelCase, yaitu pemberian huruf kapital di setiap awal kata tanpa spasi. Contoh : DetailActivity, MainActivity,dll.
- Penamaan file drawable, Action bar ab_ Button btn_ Dialog dialog_ Divider divider_ Icon ic_Menu menu_Notification notification_Tabs tab_. Contoh: btn_login, ic_logo, menu_home, dll
- CTRL +ALT+L : Untuk merapikan Source Code
- CTRL + Klik Source Code : Untuk mengetahui dari mana asal source code tersebut.
- CTRL + Klik Source Code dan tahan : Untuk mengetahu dimana saja source code tersebut digunakan.
- Untuk menetapkan nilai pada View, Kalian tidak perlu menggunakan Handler.
- SHIFT SHIFT : Untuk berpindah pindah activity, fragment atau XML.
- Fields dalam Java adalah variabel yang berada di dalam suatu kelas. Fields ini harus diletakkan di bagian paling atas dari suatu file, berikut ini adalah peraturan wajib yang sebaiknya diterapkan dalam penamaan fields pada android studio : Field yang private dan non-static diberi nama yang berawal dari m , Field yang private dan static diberi nama yang berawal dari s , Field lain diberi nama yang berawal dari kata dengan lowercase, Field yang static dan final (constants) diberi nama dengan style ALL_CAPS_WITH_UNDERSCORES.
- Drawable untuk meletakkan gambar dan icon, Mipmap hanya untuk meletakan logo.
- Variable yang hanya digunakan di dalam satu, alangkah lebih baiknya dijadikan local variable.
- Beberapa fungsi getter setter di kelas model yang tidak digunakan sebaiknya di hapus.
- Pastikan untuk menghapus pemanggilan method yang tidak ada dan tidak digunakan agar tidak terdeteksi error oleh android studio.
- Di dalam class Navigation sebaiknya masukkan menu item ke dalam group agar dapat membedakan menu yang sedang di pilih.
- Sebaiknya di package values di Style.xml rubah parent style menjadi NoActionBar untuk menghilangkan default Toolbar.
- Selalu perhatikan penggunaan fungsi yang berpotensi menyebabkan NPE. Untuk meminimalisir bisa dimasukkan ke dalam if statement .
- Pengurutan atribut XML yang baik adalah View Id, Style, Layout width dan layout height, Atribut layout lain dengan diurutkan secara alphabet, Atribut lain yang tersisa, juga diurutkan secara alphabet.
- Cara meletakkan Logo yang benar adalah : klik kanan pada folder mipmap ->new->Image Asset->pilih logo dari komputer->Next->Finish
- Cara meletakan Icon yang benar adalah : klik kanan pada drawable -> new ->Vektor Asset ->Search icon ->pilih->Next->Finish.
- Carbon.now.sh merupakan aplikasi web yang membantu developer untuk berbagi source code dengan tampilan yang lebih bagus berupa gambar.
- Database di Android diantara nya Sqlite, Room, Realm,GreenDAO,ORMLite, dll
- Octotree for Mozilla merupakan ekstensi peramban yang memudahkan untuk membuka file github. seperti pada gambar di bawah ini.