We Love Clean Codes!

Izzan Fakhril Islam
Scrum Booster
Published in
5 min readApr 30, 2019

“Kebersihan merupakan sebagian dari iman.”
— quotes dari Google

Quotes diatas merupakan quotes yang sangat umum kita dengar, dan terus ditanamkan oleh orang tua dan guru kita sejak kecil. Tentu, kebersihan dalam segala aspek, baik itu pakaian, makanan, maupun perilaku sehari-hari merupakan hal penting yang harus menjadi perhatian kita. Siapa sih, yang mau hidup jorok?

Kali ini, saya akan mengulas tentang bagaimana menjalani hidup bersih… tetapi dalam dunia software engineering! Bagaimana bisa? Bukannya code sama saja, lalu dimana letak kebersihannya? Ikuti tulisan ini sampai akhir ya!

“Keep it Clean, Your Mother Doesn’t Work Here”

Mengapa harus Clean Code?

Dalam bekerja sebagai tim, tentu saja banyak individu-individu yang bekerja secara bersamaan untuk membangun suatu fitur tertentu. Orang-orang yang berbeda, dengan berbagai paradigma tentang pemrograman yang berbeda-beda, hal ini menjadi bumerang, ketika mereka menyatukan pekerjaan (merging), akan banyak conflicts yang mungkin terjadi. Untuk itu, diperlukan adanya suatu konvensi bagaimana struktur kode yang baik dan bersih.

Selain itu, dalam suatu tim, seorang engineer tidak selamanya akan berada disana. Akan ada waktunya engineer tersebut keluar dari tim. Untuk itu, sangat penting untuk meninggalkan ‘warisan’ kepada engineer yang akan menjadi penerusnya yaitu berupa kode yang mudah dimengerti, tidak berbelit-belit, dan bersifat self-explanatory.

Prinsip-Prinsip Clean Code

“Programs are meant to be read by humans and only incidentally for computers to execute.”
— Donald Knuth

Ada beberapa prinsip-prinsip yang umum digunakan dalam menentukan batasan sebuah kode bisa dikatakan bersih atau tidak. Dari sekian banyak prinsip-prinsip clean code, saya ambil 3 yang paling penting:

  1. KISS (Keep it Simple, Stupid) Prinsip ini menyatakan bahwa banyak sistem harus dijaga agar sesederhana mungkin (namun bukan berarti tidak lebih sederhana). Kompleksitas-kompleksitas yang tidak diperlukan harusnya dihindari.
  2. DRY (Don’t Repeat Yourself) Prinsip ini menyatakan bahwa setiap bentuk kode haruslah unik, tidak ambigu, dan merupakan suatu bagian yang menjalankan fungsi tertentu dalam program. Prinsip ini berhubungan dekat dengan KISS
  3. Favor readability Prinsip ini penting dalam penulisan kode, terlebih dalam PPL, karena kita bekerja secara tim dengan orang lain. Penamaan variabel-variabel yang baik akan sangat menentukan apakah kode kita mudah dimengerti oleh anggota tim yang lain atau tidak.
    Ada beberapa cara untuk membuat kode kita mudah dibaca, salah satunya adalah dengan pemberian angka-angka yang umum ke dalam suatu variabel konstan (contoh: const CACHE_TIME = 200; ), dan membuat variabel yang lebih panjang namun informatif, daripada variabel yang pendek (contoh: userHasFormAccess lebih informatif bagi anggota tim yang lain daripada canAccess ).

Bagaimana Cara Membuat Kode yang Bersih?

1. Meaningful Names

Nama sebuah variabel, kelas, ataupun fungsi haruslah menjelaskan secara detail mengapa mereka dibuat, untuk apa, dan bagaimana cara menggunakannya dalam sebuah kata/kalimat. Usahakan untuk tidak menggunakan comment untuk menjelaskan sebuah fungsi/kelas/variabel, karena itu merupakan indikator belum dapat disebut meaningful names.

String c = "foo" //c adalah variabel judul bagian aplikasi

Potongan kode diatas merupakan contoh penamaan variabel yang tidak memenuhi meaningful names. Potongan kode yang baik adalah sebagai berikut

String applicationTitle = "foo"

Selain itu, ada beberapa best practices dalam membuat suatu nama pada variabel, kelas, ataupun fungsi. Pada Python, aturan yang digunakan untuk penamaan variabel adalah snake case, sedangkan pada Java, aturan yang digunakan adalah camel case. Nama sebuah class haruslah kata benda, seperti Person, School, Store, dll. Sedangkan, nama sebuah fungsi/method haruslah kata kerja, seperti storePassword, sendNewPost, sendComment.

2. Small Functions

Terdapat dua aturan dalam membuat sebuah fungsi, pertama sebuah fungsi haruslah kecil, yang kedua adalah sebuah fungsi harus lebih kecil dari itu. Sebuah blok kode di dalam if statement, while statement, dan sebagainya sebaiknya hanya berisi 1 baris kode. Mungkin 1 baris ini dapat berupa pemanggilan fungsi. Penerapan ini tidak hanya membuat sebuah enclosed statement kecil namun juga memberikan dokumentasi yang baik karena pemanggilan fungsi di dalamnya dapat mempunyai nama yang deskriptif.

Selain itu, sebuah fungsi tidak boleh memiliki lebih dari 3 argumen. Fungsi yang memiliki lebih dari 3 argumen bisa jadi tidak mempunyai fokus yang tinggi alias melakukan lebih dari 1 hal. Jika seandainya sebuah fungsi benar-benar membutuhkan lebih dari 3 argumen, beberapa argumen tersebut dapat dibungkus menjadi sebuah objek.

3. Comments

Jika kita merasa kode yang kita buat masih membutuhkan komentar, maka kita telah melakukan kekeliruan. Idealnya, komentar tidak dibutuhkan sama sekali, kode yang kita buat harusnya sudah menjelaskan semuanya. Terdapat komentar yang legal untuk ditulis, yaitu copyright dan licenses statements.

Penerapan Clean Code dalam Scrum Booster

Dalam pengembangan Scrum Booster, kami menggunakan berbagai prinsip-prinsip clean code dan beberapa konvensi penamaan variabel menurut bahasa pemrograman Python (backend) dan Dart (mobile apps).

Penamaan Package dan Class yang informatif

Setiap package dan class diberi nama seinformatif mungkin. Dari gambar diatas, penamaan package disesuaikan dengan halaman yang akan ditampilkan, jenis kontennya, dan kegunaannya.

Untuk potongan-potongan kode yang sering digunakan secara berulang, kami membungkusnya kedalam suatu class-class tersendiri yang ada di dalam package bernama Component. Pada aplikasi Scrum Booster, berbagai tombol dengan styling yang sama dapat muncul berkali-kali.

Berikut adalah salah satu class komponen yang ada di Scrum Booster.

Dan berikut adalah contoh pemanggilan class komponen tersebut dalam aplikasi.

//Adding Problem Items
for (ProblemItem data in widget.problemModels) {
problemsList.add(
SearchResultCard(
title: data.title,
detail: data.detail,
imageURL: data.image,
contentType: "Problems",
)
);
}

Contoh diatas merupakan pengaplikasian dari prinsip DRY (Don’t Repeat Yourself), karena potongan-potongan kode tidak dinyatakan ulang secara manual berkali-kali (dalam hal ini objek SearchResultCard), namun dibungkus dalam suatu class.

Membiasakan untuk menulis kode yang bersih memang merupakan hal yang sangat berat untuk dilakukan di awal. Apalagi jika kita mempunyai mindset untuk menyelesaikan kode dengan tujuan hanya agar selesai. (kebanyakan mindset ini digunakan dalam pengerjaan mata kuliah Dasar-Dasar Pemrograman hingga Struktur Data & Algoritma) Namun, menulis kode yang bersih adalah kemampuan yang dikategorikan dasar dan harus dimiliki semua software engineer.

— Selamat bebersih kode!

--

--

Izzan Fakhril Islam
Scrum Booster

CS Stud | Writes some (beautiful) words for human and machine.