Bebersih Kode — Clean Code
Sebagai seorang Homee Programmer alias Programmer yang lagi kerja di rumah, ada tiga aspek kebersihan yang harus selalu diperhatikan; Kebersihan badan, kebersihan lingkungan, dan tentunya kebersihan kode.
Apa yang dibersihin? Bagaimana cara membersihkannya?
Yang dibersihin itu kode yang dibuat yaa.. tapi bukan berarti membersihkan laptop seperti gambar di atas. Pada saat kita menulis kode, bisa jadi ada banyak hal kotor pada kode yang tidak kita sadari. Misalkan kita hanya menulis kode yang penting diri sendiri mengerti, sedangkan kita bekerja secara tim. Hal-hal kotor ini bisa berdampak buruk bagi proyek kita. Developer lain mungkin tidak mengerti dengan kodemu, bahasa apa yang kamu pakai…
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
— Martin Fowler
Oke.. berarti sekarang kita perlu tahu, kode seperti apa yang seharusnya dibersihkan… Jadi berikut beberapa kesalahan umum sekaligus bisa menjadi cara mengidentifikasi apakah kodemu itu kotor dan beberapa cara menanganinya.
Duplicated Code
Ketika kita membuat sebuah potongan kode, sering kali kita sadar bahwa beberapa bagian kode selalu diulangi. “Don’t Repeat Yourself”.. Jangan biarkan duplikasi itu terjadi. Ketika kamu menyadari terdapat duplikasi pada kodemu.. kamu bisa menghapusnya jika tidak diperlukan atau membuat generalisasi dari duplikasi itu. Misalkan membuat fungsi baru yang lebih re-usable.
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. — The Pragmatic Programmer Book
Naming Variables with Bobs
Bob?? Siapa Bob? Bingung kan.. jadi Bob di sini bukan berarti Bob beneran yaa.. Tapi kesalahannya adalah ketika menamakan variable dengan sesuatu yang tidak menggambarkan makna variabel itu. Jadi berikut adalah contoh penamaan variabel yang kotor dan yang harus dihindari,
Jangan lupa untuk menggunakan sistem underscore_naming ataupun camelCase dalam memberikan nama terhadap variabel. Tapi tidak sampai di situ, penamaan fungsi pun sama seperti penamaan variabel, begitu juga penamaan class. Pastikan nama-nama yang diberikan menggambarkan maknanya.
Bad Documentation
Dokumentasi yang bagus seperti apa ya? Apakah harus secara panjang lebar menjelaskan segala hal seperti iini?
Dokumentasi yang buruk terlalu panjang lebar menjelaskan hal yang sudah tergambarkan pada fungsi/variabel. Dokumentasi yang buruk juga tidak menggambarkan apapun mengenai fungsi dari kode tersebut.
Untuk menghindari dokumentasi yang buruk, usahakan kamu sudah menamakan unit variabel, fungsi, maupun class dengan baik. Barulah dokumentasi melengkapi hal-hal yang tidak dijelaskan oleh kode tersebut.
A good code is self-explanation, a good comments should exist to explain things that code cannot.
Spaghetti Code
Siapa yang tidak suka spageti, enak… tapi ketika kode kita terlihat seperti spageti, mungkin hilang selera ngoding. Spaghetti Code adalah sebuah state untuk menggambarkan kode yang berputar-putar dan kusut. Dapat diindikasi dengan fungsi yang tidak efisien, bekerja terlalu banyak, dan bergantung dengan yang lain. Hal ini membuat flow dari kode sulit diikuti dan akan sulit juga menemukan permasalahan di dalamnya ataupun meng-update fungsi.
Hindari spaghetti code dengan memastikan setiap fungsi/kelas mengerjakan hanya satu tujuan dan fokus hanya pada tujuan itu. Hindari ketergantungan antara kelas dan tingkatkan fokus pada kelas untuk menjalankan fungsinya (Law of Demeter; High Cohesion and Low Coupling).
Bad Code is difficult to understand
Kode yang baik tidak hanya di-design untuk dimengerti pembuat, tapi juga orang lain yang akan membaca codemu.. Dalam kasus ekstrim, bahkan kamu tidak mengerti apa yang kamu tulis. Untuk mengetahui keadaan ini, kamu bisa menanyakan beberapa pertanyaan ini kepada temanmu:
1. Bisakah kamu memberi tahu apa yang kode ini lakukan?
2. Apakah kamu dapat dengan mudah mengerti kodenya?
Jika kamu menemui kodemu kotor, sulit dimengerti. Bisa jadi permasalahan ada di antara salah satu kesalahan di atas sebelumnya.
Pentingkah untuk membersihkan kode?
Okee Homee Programmer.. Jadi kalau membersihkan badan itu agak males yaa dan kadang lupa, tapi membersihkan kode ini hal yang wajib kudu banget dilakuin lho buat programmer. Apalagi kalau terjun dalam suatu proyek, jangan sampai kodemu yang kotor jadi masalah dalam tim. Berikut beberapa manfaat dan alasan untuk kode yang bersih:
Penggunaan waktu yang lebih baik
Jika kamu mengerjakan proyek selama berbulan-bulan, mudah untuk melupakan hal-hal yang kamu lakukan dalam kode, terutama dalam lingkungan dengan Agile, ketika klien kembali dengan perubahan. Baris kode yang bersih memudahkan kamu melakukan perubahan. Jadi lebih agile…
Onboarding yang Lebih Mudah untuk Anggota Tim Baru
Mudah-mudahan yaa.. proyekmu jadi proyek yang begitu besar dan perlu untuk rekrut programmer-programmer baru. Menggunakan prinsip kode bersih membantu programmer baru untuk memahami kode; programmer baru dapat langsung masuk ke dalamnya. Ini juga menghemat waktu untuk melatih programmer baru dan juga waktu yang dibutuhkan programmer baru untuk menyesuaikan dengan proyek.
Debugging Lebih Mudah
Bug tidak dapat dihindari tentunya, bersih atau kotor kodemu. Tapi kode bersih akan membantu melakukan debug lebih cepat, terlepas dari seberapa banyak pengalaman atau keahlian yang dimiliki programmer. Kamu bisa dengan cepat menemukan masalah mana yang menghasilkan error. Tidak jarang juga kamu dibantu teman kan.. Nahh dengan kode yang bersih, tidak masalah: Mereka dapat masuk dan membantumu langsung.
Perawatan yang lebih efisien
Proyek yang besar butuh banyak maintenance dan banyak fitur tambahan. Dengan kode yang bersih, proyek dapat lebih mudah di-maintain dan di-extend. Bayangkan jika kodemu seperti spaghetti, akan sangat sulit maintain bahkan extend fitur-fiturnya.
Kebersihan membuat lebih nyaman
Bukankah selalu lebih nyaman melihat kamar yang rapih dibandingkan kamar yang kotor? Ketika kita berada di lingkungan yang bersih, selalu nyaman untuk bekerja dan mudah berfikir. Begitu juga lingkungan kode kita..
Tips tambahan membuat kode yang lebih kinclong
Setelah mengetahui lebih dalam mengenai urgensi clean code, berikut ada beberapa tips tambahan untuk menghindari kode yang kotor dari saya yang sudah saya terapkan di proyek kelompok PPL.
Penggunaan Design Pattern
Design pattern menjadi salah satu pilihan untuk membuat kodemu lebih efisien dan mudah dimengerti.
Penggunaan Tools untuk Code Analysis
Code Analysis ini merupakan salah satu testing strategy untuk clean code. Dengan menggunakan tools, akan dengan mudah diketahui apabila terjadi code smells, bugs, duplication yang terjadi. Salah satu yang saya gunakan di PPL adalah Python Linter, Vue lint, dan SonarQube.
Penambahan README untuk dokumentasi
README berisi hal-hal yang terkait dengan proyekmu. Hal yang paling krusial adalah bagaimana cara beradaptasi dengan environment proyekmu. Hal ini dapat memudahkan programmer baru beradaptasi dengan proyek.
Sekian Bebersih Kodenya!
Jangan lupaa yaa kebersihan itu sebagian dari iman, mempertahankan kebersihan badan, kebersihan lingkungan, dan kebersihan kode adalah kewajiban kita para programmer ;)