Ini merujuk pada diskusi dalam jawaban dan komentar dari pertanyaan ini: Ada apa dengan keengganan dokumentasi di industri? . Jawabannya mengklaim bahwa "kode tidak bisa berbohong" dan karenanya harus menjadi lokasi masuk bukan dokumentasi. Beberapa komentar menunjukkan bahwa "kode bisa berbohong". Ada kebenaran di kedua sisi, setidaknya sebagian karena betapa buruk dan tidak tepat dokumentasi ditangani.
Haruskah kita mencari kode kebohongan, membandingkannya dengan dokumentasi yang ada? Atau biasanya itu sumber terbaik untuk apa yang perlu dilakukan? Jika itu adalah kode yang gesit, apakah ia cenderung berbohong, atau bisakah kode itu tidak berbohong sama sekali?
documentation
thursdaysgeek
sumber
sumber
Jawaban:
Dalam kata-kata awam:
Ya , Anda harus mencari kode berbohong dan membuatnya mengatakan yang sebenarnya. Tetapi tidak dengan membandingkannya dengan dokumentasi. Itu akan menjadi metode untuk mendeteksi dokumentasi yang berbohong.
Ada beberapa cara kode bisa berbohong, yang akan saya sebutkan hanya beberapa:
Semakin pendek, semakin sedikit kebohongannya. Sudah terbukti dengan sendirinya.
Semakin tidak rumit kodenya, semakin transparan. Jadi letaknya lebih sedikit.
Trik sintaksis berbohong banyak. Pilih algoritma langkah-demi-langkah yang lebih jelas. Mereka kurang berbohong.
Alat analisis kode statis yang baik dapat membantu Anda menemukan kode yang terletak.
Baterai tes otomatis yang baik memaksa kode untuk mengatakan yang sebenarnya.
sumber
The shorter and terser the code is, the less it lies. It's self evident.
Saya sulit mengatakannya. Dalam pengalaman saya, semakin pendek dan semakin mudah kode, semakin banyak peluang yang harus disapu terletak di bawah permadani, umumnya dengan menyembunyikan mereka dalam panggilan fungsi menipu.p
untuk variabel yang bukan pointer.Kode tidak bisa bohong.
Apa yang ada dalam kode adalah apa yang sedang dilakukan program Anda - tidak peduli apa dokumentasi, QA, atau kata pelanggan. Terutama jika kode Anda telah dirilis dan berada di lapangan untuk sementara waktu, perilaku yang diharapkan tidak boleh diabaikan.
Kode itu tentu saja bisa salah . Tentu saja bisa menyesatkan dalam penamaan atau organisasinya. Ini tentu saja tidak bisa dibaca.
Tetapi jika Anda ingin sumber kebenaran untuk apa kode Anda lakukan , bukan apa yang seharusnya dilakukan, bukan apa yang dirancang untuk dilakukan, bukan apa yang Anda pikir itu lakukan ... jika Anda perlu tahu apa yang sebenarnya dilakukan, buka kode.
sumber
Anda mengajukan beberapa pertanyaan.
Tentu saja!
Itu tidak akan pernah menyakiti, meskipun seperti yang disebutkan dalam jawaban lain, lebih sering daripada tidak ini akan menyebabkan Anda menemukan masalah dalam dokumentasi , bukan dalam kode .
Itu selalu merupakan sumber terbaik untuk apa yang dilakukannya. Sumber terbaik untuk kode apa yang harus dilakukan dapat (kombinasi dari) hal-hal yang berbeda, yang utama adalah:
Sumber mana yang "terbaik" (atau kombinasinya) tergantung pada situasi Anda.
Saya tidak yakin apa yang Anda maksud dengan "kode gesit", AFAIK "gesit" biasanya mengacu pada proses pengkodean. Misalkan Anda berarti "kode yang dibuat dalam proses pemrograman tangkas" maka saya pikir aman untuk mengatakan bahwa itu masih bisa berbohong. Betapa mungkin berbohong, dibandingkan dengan kode yang dibuat dalam proyek-proyek gaya air terjun misalnya adalah masalah subyektif (secara pribadi saya tidak berpikir ada koneksi besar).
Catatan Kaki
Semua hal di atas adalah dengan asumsi bahwa kode dapat berbohong, dan bahwa ini adalah contoh dasar (walaupun sedikit dibuat-buat):
Ini hanyalah salah satu contoh di mana saya akan mengatakan "kebohongan kode", @ user61852 memiliki beberapa yang lain (kode tidak terjangkau, kompleksitas kode tidak cocok dengan kompleksitas masalah, penamaan yang buruk), dan saya pikir masih banyak lagi. Wikipedia memiliki ringkasan kebohongan yang lumayan , banyak dari mereka dapat ditemukan kode.
Perhatikan bahwa jika Anda bertengkar dengan seseorang, pastikan orang lain tidak bermaksud dengan "kode tidak bisa berbohong" bahwa "kode melakukan apa yang dilakukannya". Pada dasarnya orang lain di sini mendefinisikan menggunakan definisi untuk "berbohong" yang sangat sempit sehingga dapat menyatakan pernyataan "kode tidak bisa berbohong" sebagai axioma / kebenaran dasar. Dalam hal ini mungkin yang terbaik adalah setuju dengan axioma-nya.
sumber
Anda dapat berdebat tentang apakah kata "kebohongan" secara teknis sesuai, tetapi kode ini menyiratkan cukup jelas bahwa x kadang - kadang akan lebih besar dari 5 dan kadang-kadang tidak. Jika Anda melihat program lengkap dan menemukan bahwa fungsi ini hanya pernah dipanggil di satu tempat, dan bahwa x selalu diset ke konstanta 6, maka itu bohong.
Selain itu, kompiler mungkin telah memperhatikan hal ini, dan mengganti blok kode ini dengan sederhana
Jika doADifferentThing tidak dipanggil di tempat lain di program Anda, itu dapat dihapus dari program sepenuhnya.
Jika bahasa Anda mendukung
assert
sejenis, yang dimatikan dalam pembuatan produksi, setiapassert
pernyataan berpotensi bohong. Typecast adalah pernyataan lain yang bisa jadi bohong.sumber