Clean Code: Sebuah Seni dalam Menuliskan Kode
Sebagai seorang programmer, kewajiban kita dalam mengimplementasikan suatu hal tidak hanya sebatas menuliskan kode yang dapat dipahami oleh komputer, melainkan kita juga harus menuliskan kode yang dapat dipahami dengan mudah oleh orang lain, terutama apabila kita berkerja dalam sebuah proyek yang melibatkan banyak programmer lain di dalamnya. Untuk dapat melakukan hal tersebut, terdapat suatu paradigma yang dapat membantu yaitu “Clean Code”.
Sekilas Mengenai Paradigma Clean Code
Clean code is code that is easy to understand and easy to change
Paradigma Clean Code bukan merupakan sebuah paradigma yang melekat pada suatu bahasa pemrograman, melainkan sebuah paradigma yang dihasilkan oleh persetujuan dari komunitas pengguna suatu bahasa pemograman. Secara mendasar, terdapat beberapa karakteristik yang harus dipenuhi agar kode yang dibuat oleh seseorang bersifat Clean Code:
- Elegant
Kode yang dibuat harus memiliki stuktur yang baik. Selain itu, apabila kita bekerja dengan banyak file berisi kode pada suatu proyek, setiap file tersebut harus memiliki stuktur yang konsisten antara satu sama lain.
- Readable
Dalam menuliskan sebuah kode, kita harus memperhatikan aspek readability dari sudut pandang seorang manusia. Dalam arti kata, kode-kode yang dibuat harus memiliki strukur serta penamaan variabel yang mudah dibaca oleh manusia
- Focus
Hal -hal seperit fungsi, class, serta interface yang dibuat harus memiliki fungsionalias yang terfokus pada suatu hal.
- Testable
Seluruh kode yang dituliskan harus bisa di-test untuk memastikan kode tersebut dapat berjalan sesuai dengan fungsionalitas yang diharapkan.
Untuk dapat memenuhi seluruh karakteristik diatas, terdapat beberapa prinsip yang dapat diikuti, antara lain adalah
- KISS (Keep It Simple, St***d)
Kode yang dituliskan harus memiliki alur yang simpel sehingga orang yang membacanya dapat dengan mudah memahami hal yang dilakukan oleh kode tersebut.
- DRY (Don’t Repeat Yourself)
Dalam menuliskan kode, usahakan untuk meminimalisir pengulangan hal-hal yang sama sehingga apabila terjadi perubahan, perubahan yang bersifat terpusat pada suatu titik saja.
- YAGNI (You Aren’t Gonna Need It)
Ketika mengimplementasikan sesuatu, kita hanya perlu untuk menuliskan kode yang memang berkaitan dengan hal tersebut. Kita tidak perlu menuliskan kode dengan fungsionalitas yang kita “kira” akan dibutuhkan di masa depan.
- Composition Over Inheritance
Prinsip ini berlaku ketika kita ingin menggunakan prinsip OOP dalam implementasi program yang ingin dibuat. Dalam menerapkan prinsip tersebut, kita dapat terfokus dengan fungsionalitas dari suatu class dibandingkan dengan hal yang ingin direpresentasikan dengan class tersebut.
- Favor Readability
Usahakan untuk memprioritaskan readiability dari setiap kode yang dibuat mengingat projek yang kita kerjakan tidak melibatkan diri kita melainkan juga dapat melibatkan orang lain. Kode yang mudah dibaca tentu akan semakin mudah dipahami oleh orang lain.
- Practice Consistency
Ketika kita telah menggunakan suatu cara tertentu untuk menyelesaikan suatu permasalahan, maka kita harus tetap menggunakan cara yang sama untuk menyelesaikan permasalahan-permasalahan serupa yang muncul di kemudian hari selama masa pengerjaan proyek tersebut. Apabila tidak, maka kita harus memberikan command di bagian kode untuk menjelaskan mengapa hal tersebut dilakukan.
Untuk dapat memenuhi keseluruhan karakteristik dan prinsip yang dijelaskan sebelumnya, terdapat sebuah tools bernama “Linter” yang berfungsi untuk melakukan analisis terhadap kode-kode pada suatu projek untuk dapat mengidentifikasi error yang ada, bug, kesalahan pada styling, serta keanehan dalam struktur. Setiap bahasa pemrogramman tools Linter-nya masing-masing, seperti python dengan Pylint, JavaScript dengan Eslint, Java dengan Sonarlint dan lain lain. Berikut adalah contoh output dari Pylint yang ada dalam script gitlab.ci.yml.
Implementasi Paradigma Clean Code dalam SISIDANG
Proyek SISIDANG yang saya kerjakan bersama teman-teman saya merupakan lanjutan proyek yang sudah ada sebelumnya. Sehingga agar kami dapat mengimplementasikan PBI-PBI yang ada, kami perlu untuk memahami kode-kode yang mendukung fungsionalitas SISIDANG yang sudah ada sebelumnya, Beruntung, pihak-pihak yang mengimplementasikan SISIDANG sebelumnya sudah dapat mengimplementasikan beberapa teknik yang ada dalam paradigma Clean Code sehingga kami dapat memahami kode-kode yang ada hanya dengan sedikit kesulitan. Berikut adalah beberapa teknik dalam paradigma Clean Code yang telah kami temukan ada dalam proyek SISIDANG yang sudah ada:
- Meaningful Names
Dalam mendeklarasikan suatu variabel, kita harus menggunakan kata/frasa yang bersifat deskriptif terhadap nilai yang disimpan pada variabel tersebut sehingga kode yang dapat dengan mudah dipahami atau bahkan dapat dibaca sebagai “cerita”.
Contoh diatas sudah memenuhi aspek “Meaningful Names” karena seluruh variabel yang diinisiasi memiliki nama yang cocok dengan nilai yang disimpanya.
- Good Function
Untuk mendefinisikan suatu fungsi, kita harus membuat nama fungsi yang dapat mendeskripsikan hal yang dilakukan oleh fungsi tersebut. Selain itu, fungsi yang dibuat harus dapat melakukan suatu hal yang spesifik. Jangan membuat sebuah fungsi yang bisa melakukan banyak hal sekaligus.
Contoh diatas sudah memenuhi aspek “Good Function” karena seluruh fungsi diatas hanya dapat melakukan penghapusan suatu sidang serta penaaman fungsinya sudah sesuai dengan hal yang bisa dilakukanya
- Good Comments
Untuk menjelaskan dengan mudah apa yang dilakukan oleh suatu potongan kode, kita dapat menambahkan comment di bagian kode tersebut. Comment yang dibuat usahakan tidak bersifat redundant karena bisa digantikan melalui penamaan variabel serta fungsi.
Contoh diatas sudah memenuhi aspek “Good Comments” karena seluruh comment yang ada pada fungsi tersebut tidak bersifat redundant. Selain itu, comment yang ada juga sudah dapat menjelaskan fungsionalitas dari suatu potongan kode.
Namun, tidak ada gading yang tak retak. Meskipun beberapa teknik pada paradigma Clean Code sudah diterapkan pada SISIDANG, terdapat suatu kesalahan pada struktur kode SISIDANG secara keseluruhan. Seluruh kode-kode yang ada dalam SISIDANG masih bersifat terpusat belum dipisahkan sesuai dengan fungsionalitasnya. Hal tersebut menyebabkan saya dengan teman-teman saya membutuhkan waktu yang lebih lama untuk mempelajari struktur kode dari SISIDANG.
Referensi
- Slide Dosen Tamu Clean Code PPL Fasilkom UI 2021
- https://x-team.com/blog/principles-clean-code/
- https://www.baeldung.com/java-clean-code