Clean Code — Salah satu Aspek Software Craftmanship
Problem
Pada suatu hari terdapat seorang mahasiswa ilmu komputer bernama Dipper yang sedang mengerjakan tugas kelompok pemrograman. Dia mengerjakan bagiannya dengan prinsip “asal jadi” dan hasilnya code tersebut kompleks dan ditambah penamaan variable, function, class yang asal-asalan. Beberapa hari kemudian Dipper ditanya oleh Mabel teman satu kelompoknya mengenai codenya karena Mabel ingin melanjutkan bagiannya yang depends dengan bagian Dipper. Membutuhkan waktu yang cukup lama untuk Dipper mengerti codenya sendiri dan menjelaskan ke Mabel dari awal sampai akhir mengenai codenya. Dan Mabel sendiri kesulitan menghafal semua variable, function, dan class dari code Dipper yang akan ia gunakan untuk bagiannya. Dari problem sederhana tersebut maka munculah konsep yang dinamakan clean code.
Apa itu Clean Code?
Clean code adalah code dalam software yang mudah dipahami dan terstructure dengan rapih. Kualitas software tidak hanya dinilai dari fungsionalitasnya yang berjalan dengan baik, tapi yang memiliki code quality yang baik, dan maintainable.
Clean code merupakan salah satu aspek dalam software craftmanship yaitu panduan menulis source code dengan baik sehingga software dapat maintainable dan mudah dikembangkan untuk jangka panjang.
Prinsip Clean Code
Tentunya prinsip clean code akan sedikit berbeda berbagai bahasa pemrograman. Misal dalam python ikuti PEP 8 untuk format styling code yang sesuai. Namun berikut prinsip umumnya.
Variable
1. Menggunakan kata yang merepresentasikan isi dari variable (Meaningful names)
2. Menggunakan kata yang sama untuk suatu tipe variable yang sama
3. Menggunakan nama yang mudah dicari (Searchable)
5. Hindari penggunaan variable dengan nested code yang terlalu dalam dan return value diawal
6. Jangan tambahkan kata yang tidak perlu
7. Menggunakan default value ketimbang menggunakan assign variable atau dengan conditionals
Function
1. Memberikan argumen atau parameter yang tidak terlalu banyak dan perhatikan yang penting.
2. Hanya memiliki satu responsibility
3. Penamaan fungsi harus jelas dan menggambarkan apa yang dilakukan dari fungsi tersebut
4. Hindari negatif conditional
5. Buang code yang di comment atau code yang memang sama sekali tidak digunakan
6. Tidak terdapat side effect
Class
1. Berukuran kecil atau tidak terlalu kompleks yang seharusnya dapat dibuat class berbeda
2. Hanya memiliki satu responsibility
3. Mengikuti prinsip ‘Open for extension, closed for modification’
Tests
1. Cepat dieksekusi
2. Tiap test bersifat independen dengan test lain.
3. Test harus dapat digunakan berulang untuk beberapa environmen dan menghasilkan hasil test yang sama
4. Self-Validating (Automated Test)
5. Timely
Implementasi Clean Code
Saya pribadi telah mengimplementasikan Clean Code dalam berbagai proyek salah satunya pada proyek akhir mata kuliah PPL (Proyek Perangkat Lunak). Pada proyek ini saya mengimplementasikan backend API yang menggunakan bahasa pemrograman Python dengan Django REST Framework. Contoh yang akan diberikan mengimplementasi fitur signup.
Pada contoh diatas diimplementasikan meaningful name pada nama variabel dan function. Selain itu function juga dibuat untuk mengerjakan hanya satu pekerjaan saja.
Pada code diatas juga sudah mengimplementasikan meaningful name, dan Class dibuat seminimal mungkin dan tidak terlalu kompleks. Class diatas juga mengikuti konsep “Open for extension, closed for modification”
Code diatas mengimplementasikan test dan terdapat normal test dan abnormal test. Dan terlihat dalam satu function hanya test sesuatu yang spesifik, misal signup jika tidak terdapat email.
Code diatas menunjukan bahwa hasil code telah lulus test yang menandakan sudah mengimplementasikan dengan cukup baik clean code.
Terlihat juga saat melakukan check style (linting), seluruh code sudah mengikuti PEP8 python yang benar.
Demikian penjelasan singkat mengenai clean code. Terimakasih telah membaca artikel ini, dan semoga bermanfaat. Sampai jumpa di artikel lain.