Clean Code

Yusuf Sholeh
PPL A-4 YUK RECYCLE
2 min readMar 20, 2019

Pengembangan perangkat lunak biasanya dikembangkan oleh banyak orang (developer). Sering kali kode yang telah dibuat dilihat dan dipahami oleh developer lain. Apabila kode yang dibuat kotor, maka developer tersebut akan kesusahan dalam memahami dan memungkinkan penjelasan dari developer yang membuat kode terkait. Oleh karena itu, kebersihan kode menjadi hal yang sangat penting. Terdapat sebuah buku yang berjudul “Clean Code: A Handbook of Agile Software Craftsmanship” oleh Robert C. Martin yang menjelaskan bagaimana cara membuat sebuah code yang clean (bersih dan mudah dipahami). Dalam pengembangan proyek ini, kami berusaha untuk mengikuti aturan Clean Code tersebut. Berikut beberapa yang telah kami terapkan:

  • Don’t Repeat Yourself.

Berarti bahwa tidak terdapat pasangan kode yang memiliki behaviour yang sama dan di tempat yang berbeda. Hal ini diatasi dengan pembuatan fungsi yang mengimplementasikan behaviour tersebut secara general. Sebagai contoh dalam proyek kami, kami membuat sebuah folder util yang berisi helper yang dapat dipakai diberbagai file. Berikut merupakan contohnya:

Fungsi writeEncoded tersebut mempunyai 2 parameter, yaitu http.ResponseWriter dan sebuah data interface{}. Untuk parameter HttpResponseWriter ini berfungsi mengembalikan body pada http response. Sedangkan parameter kedua, variable yang dimasukkan dapat bertipe apapun lalu di-casting menjadi interface{} (Dalam golang tipe data string, object, pointer, integer, dll. semua dapat dicasting menjadi interface{}). Artinya, fungsi tersebut menulis JSON pada body dengan tipe data apapun. Oleh karena itu, untuk setiap end-point pada API yang telah dibuat, cukup panggil writeEncoded(w, anything) apabila kita ingin mengembalikan JSON sebuah data.

  • Meaningful Name

Saat memberikan nama pada sebuah variable atau method, selalu buat agar sedeskriptif mungkin atau seintuitif mungkin. Penamaan yang kami buat diseragamkan dalam bahasa inggris dan diberikan nama se-simple mungkin dan se-efektif mungkin. Sebagai contoh, pada repository dikelompok kami terdapat class ORM Mitra yang terhubung dengan database, nama-nama method yang kami gunakan yaitu GetAll(), GetByPhoneNumber(), GetByEmail(), Save(). Nama-nama tersebut sudah cukup deskriptif dan efektif, sehingga tidak perlu diberikan comment.

  • Error handling

Dalam arsitek back-end kelompok kami, apabila sebuah method mempunyai setidaknya sebuah pemanggilan yang dapat menimbulkan error, maka method tersebut harus mengembalikan error juga. Dari manapun error tersebut berasal, error tersebut harus naik hingga ke permukaan dan dijadikan sebagai response body. Dengan arsitek ini, hampir setiap kemungkinan error sudah terhandling dengan baik dan diharapkan mendapatkan informasi yang meaningful ketika terjadi sebuah error.

  • Layout formatting

Menerapkan formatting terhadap kode. Kami menggunakan go-lint yang di-embed dalam editor kami, sehingga apabila terdapat kesalahan indentasi, maka akan langsung dibetulkan. Kerennya lagi, go-lint sudah mempunyai convention mengenai penamaan variable yang biasanya developer (termasuk saya) salah dalam menulisnya. Contoh yang saya alami yaitu, ketika saya menulis variable UserId, maka go-lint menganggap hal tersebut adalah sebuah error dan menyuruh kita untuk merubahnya menjadi UserID. Contoh lainnya yaitu HttpCode menjadi HTTPCode. Selain di editor, kami juga menaruh go-lint didalam CI/CD jobs agar kode yang kami buat mengikuti aturan yang sama, dan kode yang berada didalam staging/production pun dijamin rapih dan seragam.

Sekian penjelasan dari saya, semoga bermanfaat.

--

--