Mudah untuk diartikan adalah istilah yang spesifik secara budaya, itulah sebabnya sangat sulit untuk memberikan contoh konkret. Ini adalah istilah yang dilabuhkan kepada orang-orang yang melakukan penalaran.
"Mudah untuk alasan" sebenarnya adalah frase yang sangat deskriptif diri. Jika seseorang melihat kode, dan ingin menjelaskan apa yang dilakukannya, mudah =)
Oke, hancurkan. Jika Anda melihat kode, biasanya Anda ingin melakukan sesuatu. Anda ingin memastikan bahwa itu melakukan apa yang menurut Anda harus dilakukan. Jadi Anda mengembangkan teori tentang apa yang harus dilakukan kode, dan kemudian Anda beralasan untuk mencoba berdebat mengapa kode itu benar-benar berfungsi. Anda mencoba untuk berpikir tentang kode seperti manusia (bukan seperti komputer) dan mencoba merasionalisasi argumen tentang apa yang dapat dilakukan kode.
Kasus terburuk untuk "alasan mudah" adalah ketika satu-satunya cara untuk memahami apa yang dilakukan oleh kode adalah dengan masuk baris demi baris melalui kode seperti mesin Turing untuk semua input. Dalam hal ini, satu-satunya cara untuk alasan apapun tentang kode ini adalah untuk mengubah diri menjadi komputer dan jalankan di kepala Anda. Contoh-contoh kasus terburuk ini mudah dilihat dalam kontes pemrograman usang, seperti 3 baris PERL ini yang mendekripsi RSA:
#!/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj
$/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1
lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/)
Untuk alasan yang mudah, sekali lagi, istilah ini sangat kultural. Anda harus mempertimbangkan:
- Keterampilan apa yang dimiliki nalar? Berapa banyak pengalaman?
- Pertanyaan macam apa yang mungkin dimiliki si pemikir tentang kodenya?
- seberapa yakin pemikir perlu?
Masing-masing mempengaruhi "mudah untuk alasan" berbeda. Ambil ketrampilan nalar sebagai contoh. Ketika saya mulai di perusahaan saya, disarankan agar saya mengembangkan skrip saya di MATLAB karena "mudah untuk dipikirkan." Mengapa? Nah, semua orang di perusahaan tahu MATLAB. Jika saya memilih bahasa yang berbeda, akan lebih sulit bagi siapa pun untuk mengerti saya. Nevermind bahwa keterbacaan MATLAB mengerikan untuk beberapa tugas, hanya karena itu tidak dirancang untuk mereka. Kemudian, ketika karier saya berkembang, Python menjadi semakin populer. Tiba-tiba kode MATLAB menjadi "sulit untuk dipikirkan" dan Python adalah bahasa preferensi untuk menulis kode yang mudah dipikirkan.
Pertimbangkan juga apa yang mungkin dimiliki pembaca. Jika Anda dapat mengandalkan pembaca Anda untuk mengenali FFT dalam sintaksis tertentu, itu "lebih mudah untuk alasan tentang" kode jika Anda tetap pada sintaks itu. Ini memungkinkan mereka melihat file teks sebagai kanvas yang Anda lukis FFT ke, daripada harus masuk ke detail seluk beluk. Jika Anda menggunakan C ++, cari tahu seberapa nyaman pembaca Anda dengan std
perpustakaan. Seberapa mereka suka pemrograman fungsional? Beberapa idiom yang keluar dari wadah perpustakaan sangat bergantung pada gaya idomatik yang Anda inginkan.
Penting juga untuk memahami jenis pertanyaan apa yang mungkin ingin dijawab oleh pembaca. Apakah pembaca Anda sebagian besar peduli dengan pemahaman dangkal terhadap kode, atau mereka mencari bug di dalam perut?
Betapa yakin pembaca harus benar-benar menarik. Dalam banyak kasus, alasan kabur sebenarnya cukup untuk mengeluarkan produk. Dalam kasus lain, seperti perangkat lunak penerbangan FAA, pembaca akan ingin memiliki alasan kuat. Saya menemukan sebuah kasus di mana saya berpendapat untuk menggunakan RAII untuk tugas tertentu, karena "Anda bisa mengaturnya dan melupakannya ... itu akan melakukan hal yang benar." Saya diberitahu bahwa saya salah tentang itu. Mereka yang akan membahas kode ini bukan tipe orang yang "hanya ingin melupakan detailnya." Bagi mereka, RAII lebih seperti tongkat gantung, memaksa mereka untuk memikirkan semua hal yang bisa terjadi ketika Anda meninggalkan ruang lingkup.