Coba kita lihat contoh dibawah ini.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function processTransactions(transactions) {
  if (transactions && transactions.length > 0) {
    for (const transaction of transactions) {
      if (transaction.type === "PAYMENT") {
        if (transaction.status === "OPEN") {
          if (transaction.method === "CREDIT_CARD") {
            processCreditCardPayment(transaction);
          } else if (transaction.method === "PAYPAL") {
            processPayPalPayment(transaction);
          } else if (transaction.method === "PLAN") {
            processPlanPayment(transaction);
          }
        } else {
          console.log("Invalid transaction type!");
        }
      } else if (transaction.type === "REFUND") {
        if (transaction.status === "OPEN") {
          if (transaction.method === "CREDIT_CARD") {
            processCreditCardRefund(transaction);
          } else if (transaction.method === "PAYPAL") {
            processPayPalRefund(transaction);
          } else if (transaction.method === "PLAN") {
            processPlanRefund(transaction);
          }
        } else {
          console.log("Invalid transaction type!", transaction);
        }
      } else {
        console.log("Invalid transaction type!", transaction);
      }
    }
  } else {
    console.log("No transactions provided!");
  }
}

Apakah itu Clean Code? Mungkin kita semua akan setuju bahwa itu bukan Clean Code. Banyak kode yang sulit dibaca. Banyak struktur kondisi bersarang yang terlalu dalam. Contoh diatas terlihat sangat jauh dari konsep Clean Code.

Sekarang, coba kita coba ambil contoh yang lain. Apakah ini Clean Code?

1
max = create('Max', 31)

Terlihat hanya ada satu baris kode, dan kita seperti memanggil fungsi create, yang membuat akun pengguna bernama Max dengan umur 31.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
def create(m, n):
    if m == 'Max':
        return lambda v: v < n
    elif m == 'Min':
        return lambda v: v > n


max = create('Max', 31)

print(max(15))
print(max(32))

Contoh diatas adalah kode python. Jika kamu tidak tahu bahasa pemrograman python, penulis akan mencoba membantu mendefinisikan fungsi tersebut. Fungsi diatas akan mengembalikan nilai berupa lambda, kata kunci yang digunakan untuk menghasilkan nilai dari suatu ekspresi.

Sekarang, mari kita coba pahami bersama. Apa yang sebenarnya dilakukan contoh kode tersebut? Fungsi create pada kode diatas sebenarnya tidak membuat akun pengguna atau semacamnya. Fungsi tersebut merupakan fungsi factory, atau fungsi yang digunakan untuk membuat fungsi yang lain. Dan fungsi yang dibuat adalah fungsi validasi. Yang kita lakukan adalah, menetapkan nilai konfirmasi terlebih dahulu dengan nilai tertentu, pada contoh ini adalah 31. Kemudian kita akan mendapatkan sebuah fungsi baru yang bisa kita panggil untuk membandingkan antara nilai konfirmasi dengan nilai yang lain. Operasi perbandingan yang dilakukan bisa lebih besar atau lebih kecil, tergantung dari parameter yang kita berikan sebagai validasinya, yaitu Max atau Min.

Contoh diatas sama sekali bukan Clean Code, karena sangat membingungkan. Kita butuh waktu untuk bisa memahami apa yang dilakukan oleh kode tersebut. Bahkan kode diatas bisa dikatakan sebagai kode yang buruk, karena kita harus banyak berfikir untuk bisa memahami apa fungsinya.

Kode yang dapat berkerja dengan baik belum tentu dikatakan sebagai Clean Code. Kode yang ditunjukkan diatas bekerja dengan baik, tapi sangat membingungkan. Clean Code bukanlah tentang kode yang dapat berkerja dengan baik atau tidak. Tapi tentang kode yang mudah dibaca dan dipahami. Kita sebagai developer, sering kali menghabiskan banyak waktu untuk membaca dan memahami kode di masa lalu, entah itu untuk memperbaiki bug, menambahkan fitur baru, atau mungkin karena perlu mendalami kode yang ditulis oleh kolega atau developer lain. Jika sebuah kode sulit untuk dibaca dan dipahami, maka kita akan kehilangan banyak waktu dan produktivitas. Parahnya lagi, kode tersebut bisa saja mati, karena tidak ada yang bisa memahami kode tersebut sepenuhnya.

Sebagai contoh, kita bisa memilih nama yang berbeda, maka secara otomatis kode diatas akan menjadi lebih jelas, menjadi lebih mudah dibaca, sehingga tidak butuh waktu lama untuk memahami apa yang terjadi.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
def create_validator(mode, number):
    if mode == 'Max':
        return lambda value: value < number
    elif mode == 'Min':
        return lambda value: value > number


is_below_max = create_validator('Max', 31)

print(is_below_max(15))
print(is_below_max(32))

Atau kita juga bisa menulis ulang kode dengan cara lain. Misalnya kita bisa membuat sebuah class baru dengan nama yang baik, dan semua logika validasinya. Hal ini juga menjelaskan bahwa ada banyak cara untuk menulis Clean Code. Salah satu solusi yang mungkin digunakan adalah dengan pemilihan nama fungsi yang lebih baik. Atau bisa juga dengan melihat kasus yang dihadapi lebih mendalam, sehinggal lebih banyak solusi yang mungkin akan muncul. Konsep dan aturan yang berlaku bisa saja berbeda, tergantung dari siatuasinya.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
class ValidatableNumber:
    def __init__(self, number):
        self.number = number

    def is_bigger_than(self, other_number):
        return other_number < self.number

    def is_smaller_than(self, other_number):
        return other_number > number


input_number = ValidatableNumber('Max', 31)

print(input_number.is_bigger_than(15))
print(input_number.is_bigger_than(32))

jadi apa itu Clean Code? Clean Code adalah kode yang dapat dibaca dan dimengerti, sehingga dapat mengurangi beban kognitif yang harus kita lalui. Clean Code harus ringkas dan to the point. Kita tidak akan menemukan nama-nama yang tidak intuitif, struktur kondisi bersarang yang terlalu dalam, atau blok kode yang besar. Pada dasarnya kita bisa mengikuti best practices dan pola yang sudah umum. Ada banyak konsep dan aturan yang akan kita bahas pada tutorial ini. Dengan menerapkan konsep Clean Code, menulis dan memelihara kode akan menjadi lebih mudah, karena kode tersebut dapat dipahami semua orang.

Apa Itu Clean Code

Clean Code adalah kode yang mudah dipahami. Dirty Code tidak mudah dipahami. Kita harus bisa menulis kode seperti sebuah puisi, atau cerita dongeng. Kita sebagai developer adalah seorang pujangga, dan kita ingin agar hasil tulisan kita terasa indah, mudah dibaca dan dipahami orang lain. Tujuan dari tutorial ini, agar kita dapat mempelajar beberapa teknik dan aturan yang dapat membantu kita dalam menulis Clean Code.