Clean Code is fun

Refo Ilmiya
AdHub Team
Published in
4 min readMay 26, 2019

Contoh Implementasi Clean Code

Gambar 1 penerapan Clean Code di Adhub

6 poin Clean Code

Berdasarkan buku “Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin, Prentice Hall, 2008” Terdapat 6 poin tentang Clean Code yang bisa membantu kualitas kode yang kita tulis agar lebih mudah dipahami dan bisa terus dikembangkan. 6 poin tersebut adalah sebagai berikut,

1. Comments

Comments digunakan apabila terdapat potongan code yang kurang jelas. Namun apabila kita mengikuti clean code dengan sungguh-sungguh seharusnya kita dapat memberikan code yang mudah dimengerti. Jadi, commments digunakan hanya pada code yang digunakan dari source luar seprti API misalnya. Adapun contoh penggunaan comments untuk code yang kurang jelas adalah sebagai berikut,

Gambar 2 Penggunaan comments karena penggunaan resource dari luar

Gambar 2 memperlihatkan kita bahwa comments dianjurkan untuk digunakan untuk memberikan kejelasan apabila kita menggunakan code atau resource dari luar seperti API google dalam hal ini.

2. Penamaan yang berarti

Gunakan tujuan untuk memilih nama. Memilih nama yang baik membutuhkan waktu tetapi akan menghemat lebih banyak waktu daripada yang dibutuhkan karena waktu yang diperlukan untuk memahami suatu variabel menjadi lebih singkat. Nama variabel, fungsi, atau kelas, harus menjawab semua pertanyaan besar. Nama harus memberi tahu programmer mengapa itu ada, apa fungsinya, dan bagaimana ia digunakan. Jika suatu nama memerlukan komentar, maka nama tersebut tidak mengungkapkan maksudnya karena artinya nama variabel tersebut tiak jelas.

Pada Gambar 1, diperlihatkan bahwa kami menggunakan penamaan yang jelas dan deskriptif untuk masing-masing variabel. Penamaan variable pada Gambar 1 dapat dengan mudah dimengerti. Variable tersebut adalah data artinya data yang akan digunakan, image_iklan adalah gambar dari objek iklan, iklan artinya objek iklan itu sendiri, detail_biaya artinya objek dari detail biaya, iklan_id merupakan id iklan, url artinya url yang dituju, resp artinya respon yang diberikan, dan data_redirect_chain artinya data chain yang dari redirect url.

3. Penulisan Fungsi yang simpel dan efektif

Fungsi yang dibuat hanya dapat memiliki satu tujuan atau hanya melakukan satu hal saja. Setiap fungsi harus mudah dimengerti behavior nya. Sehingga, penulis fungsi harus memikirkan dengan matang tentang side-effect yang mungkin dapat membuat pengembang berikutnya kebingungan.

Pada Gambar 1 di atas, terlihat bahwa fungsi hanya memiliki satu tujuan yaitu mengetes apakah konfirmasi page dapat di-load dengan sempurna.

Gambar 3 Tujuan fungsi test_success_load_konfirmasi_page

Potongan kode pada Gambar 3 mengindikasikan bahwa fungsi test_success_load_konfirmasi_page memilki satu fungsi yaitu mengecek apakah page konfirmasi berhasil di-load dengan sempurna. Hal ini dapat dilihat dari tidak adanya redirect chain berkutnya dan response code yang bernilai 200.

4. Pengkodean Error dan Exception Handling

Error handling tentu diperlukan sebagai antisipasi apabila terdapat kondisi yang belum terpikirkan dan tidak terhandle dapat teratasi dengan menampilkan page 500 atau 404 not found. Adhub telah menangani hal ini dengan menampilkan page tersebut apabila diberikan response 404. Page tersebut dapat dilihat sebagai berikut,

Gambar 4 Page 404 Not Found

Page tersebut dapat ditampilkan dengan mengubah status debug menjadi false pada settings.py dan memberikan rujukan page error di base url Adhub,

Gambar 5 Page Error Handling

Dengan demikian setiap kali terdapat error atau kondisi yang belum dihandle, user tetap bisa bernavigate baik ke page sebelumnya atau kembali ke homepage, bahkan login atau logout.

5. Don’t Repeat yourself.

Dalam melakukan programming in a team atau secara kolaboratif, sebisa mungkin tidak ada duplikasi kode dan program yang dibuat harus bersifat modular dan rapih. Hal ini mungkin agak sulit karena perlu koordinasi antar anggota tim untuk memastikan tidak ada anggota tim yang mlakukan fungsi yang sama. Konsep/paradigma sperti Object-Oriented telah diimplementasikan di adhub, contohnya adalah sebagai berikut,

Sumber Code : https://gitlab.cs.ui.ac.id/ppl-fasilkom-ui/2019/PPLA2/blob/staging/detail/tests.py

Gambar 6 Contoh Object-Oriented Design

Kami telah menerapkan OO Design pada file tests.py di app detail. Terdapat tiga kelas yang masing-masing memiliki purpose yang berbda. Sebagai contoh pada DetailViewTest kita hanya ingin mengetahui apakah view telah terimplementasi dengan baik untuk sekedar menampilkan page. Sedangkan GoogleAPITest dan Cookis_Flush_Databse memiliki purpose berbeda.

6. Layout Formatting

Masing-masing programming laguage memiliki aturan format tersendiri. Untuk Python khususnya memiliki aturan mengikuti PEP-8. Pada platform yang kami gunakan sendiri (PyCharm) memiliki fitur untuk langsung mengatur format code menjadi sesuai format PEP-8. Adapun command tersebut pada mac adalah

command + shift + L

Aturan penamaan dalam PEP-8

Adapun format PEP-8 pada python sesuai aturannya adalah sebagai berikut

Dapat dilihat pada Gambar 1, bahwa fungsi test_success_load_konfirmasi_page memiliki satu tujuan yaitu mengetes konfirmasi page dapat diload dengan sempurna.

  • Penamaan fungsi sesuai dengan PEP-8 yaitu snake dan nama fungsi juga dapat dengan mudah membuat programmer mengerti apa tujuan dari fungsi ini.
  • Panjang tiap line juga sesuai dengan PEP-8 yakni kurang dari 80 karakter sehingga dapat dilihat Saya melakukan new line tiap terdapat adanya line yang terlalu panjang seperti pada variabel iamge_iklan.

References:

--

--