Halo, Habr!
Seberapa sering Anda memiliki bahwa Anda atau kolega Anda tidak dapat menggambarkan kode Anda sendiri dengan beberapa frasa?
Saya membawa kepada Anda terjemahan dari artikel "Cara menulis kode yang mudah dijelaskan" oleh Cedd Burge , di mana ia membagikan sarannya tentang cara menghindari situasi seperti itu.

Ketika kode sulit untuk dijelaskan dengan kata-kata, kebanyakan orang harus menggunakan imajinasi untuk melakukan ini. Karena alasan ini, energi mental terbuang dan risiko kesalahan dalam menafsirkan kode meningkat. Orang yang berbeda masih akan merasakan kata-kata dengan cara mereka sendiri, yang akan menyebabkan kebingungan ketika membahas kode.
Sebagai aturan, diskusi tersebut menjadi lahan subur untuk kesalahan yang muncul karena kesalahpahaman, dan memperbaiki kesalahan ini sering mengarah pada munculnya kesalahan baru untuk alasan yang sama. Pada akhirnya, kami mendapatkan kode yang tidak dapat dipahami yang tidak ingin dikerjakan oleh siapa pun.
Contoh Kode Tak Terlukiskan
Anda mungkin berpikir bahwa kode itu hanya bahasa tertulis. Jika kode terlihat sederhana, maka dapat dengan mudah dibaca, dijelaskan, dan dipahami. Namun, ini tidak selalu terjadi.
Keputusan umum di bawah ini menentukan apakah satu tahun adalah tahun kabisat.
(divisibleBy(4) and not divisibleBy(100)) or divisibleBy(400)
Ini adalah kode sederhana. Ini memanggil fungsi 3 kali, memiliki 3 operator (dan, atau, tidak) dan dua tingkat bersarang.
Tapi saya pikir jika Anda diberikan satu detik untuk menggambarkan algoritma ini menggunakan kata-kata, Anda akan mengalami kesulitan.
Mungkin โsatu tahun adalah tahun kabisat jika dapat dibagi 4 dan tidak habis dibagi 100, atau habis dibagi 400โ?
Masalahnya adalah bahwa dalam kata-kata, tidak seperti kode, tidak ada tanda kurung. Oleh karena itu, sulit untuk secara memadai menggambarkan kondisi dalam kata-kata dan apakah kata "dapat dibagi dengan 400" mengacu pada "habis dibagi 4" atau "tidak habis dibagi 400". Untuk mengatasi masalah ini, Anda dapat menentukan tanda kurung dengan tangan Anda atau mengambil jeda lebih lama di antara kondisi, tetapi kemungkinan kesalahan masih tetap besar.
Refactoring kode yang dijelaskan
Pertama-tama kita dapat menggambarkan kondisi dalam kata-kata dan hanya kemudian menguranginya, membuatnya sejelas dan seringkas mungkin. Mari kita mulai seperti ini:
"400 tahun adalah kasus unik. Jika satu tahun dapat dibagi dengan 400, maka ini adalah tahun kabisat. 100 tahun juga merupakan kasus unik. Jika satu tahun dapat dibagi dengan 100, maka itu bukan tahun kabisat kecuali dibagi oleh 400, jadi prioritas untuk kasus khusus adalah "400 tahun." Jika tidak ada kasus khusus, maka tahun ini adalah tahun kabisat, asalkan dibagi dengan 4 ".
Kedengarannya jelas, tetapi tidak ringkas, jadi kami akan mempersingkat teks:
โJika tahun dibagi 400, maka itu adalah tahun kabisat. Jika dibagi 100, maka ini adalah tahun yang normal, tetapi bila dibagi 4, ini adalah tahun kabisat. "
Jika kita mengubah kata-kata ini menjadi kode, kita mendapatkan sesuatu seperti berikut:
if divisbleBy(400): return LeapYear elif divisbleBy(100) return NormalYear elif divisbleBy(4): return LeapYear else: return NormalYear
Kesimpulan
Sulit untuk memahami kode adalah hal biasa bagi hampir semua programmer. Kami akan membantu diri sendiri dan kolega kami jika kami menulis kode yang mudah dijelaskan dengan kata-kata.
Dan yang paling penting, menulis kode dengan cara ini paling mudah, karena tidak ada usaha mental yang sia-sia. "Trik" adalah algoritme yang pertama kali dijelaskan oleh kata-kata yang nantinya akan digunakan untuk menulis kode.
Di banyak organisasi, kode sudah mulai dijelaskan dalam kata-kata dalam tes penerimaan atau cerita pengguna, yang dapat meningkatkan produktivitas.