Tampaknya kesalahan off-by-one adalah salah satu kesalahan pemrograman paling umum (jika bukan yang paling umum) (lihat /software/109/what-are-common-mistakes-in-coding , dan kebijaksanaan konvensional).
Apa alasan ini sangat umum, apakah ada hubungannya dengan cara kerja otak manusia?
Apa yang bisa kita lakukan untuk mencegah jatuh mangsa ke mati oleh satu kesalahan?
Jawaban:
Semacam itu ada hubungannya dengan cara kerja otak manusia. Kami siap menjadi "cukup baik" untuk tugas-tugas yang biasanya tidak membutuhkan ketelitian tingkat teknik. Ada alasan mengapa kasus yang paling sulit kita tangani disebut kasus "tepi".
Mungkin cara terbaik untuk menghindari kesalahan satu per satu adalah enkapsulasi. Misalnya, alih-alih menggunakan loop untuk yang mengulang koleksi dengan indeks (dari 0 hingga hitungan - 1), gunakan loop gaya untuk-masing-masing dengan semua logika tempat berhenti dibangun ke enumerator. Dengan begitu Anda hanya perlu mendapatkan batas yang benar satu kali, saat menulis enumerator, bukan setiap kali Anda mengulang koleksi.
sumber
Ada sesuatu yang istimewa tentang bagaimana otak menangani batas dan tepi.
Meskipun lebih mudah bagi otak untuk berpikir dalam hal rentang dan ruang , fokus pada sisi tampaknya membutuhkan perhatian lebih. Inilah bagaimana ini terjadi, kehilangan perhatian sesaat atau konsentrasi yang tidak memadai dan Anda melewatkan perbatasan.
Tambahan kecil lain untuk masalah ini adalah bahwa lingkungan pemrograman yang berbeda memiliki sistem indeksasi yang berbeda mulai dari 0 atau 1 yang dapat menambah kebingungan bagi orang-orang yang secara aktif terpapar pada kedua jenis lingkungan.
sumber
Saya percaya ini karena pengalihan konteks. Dalam kehidupan kita sehari-hari kita cenderung menggunakan indeks berbasis 1. Karena itu otak kita tidak dapat membakar perilaku yang benar ke dalam memori jangka panjang.
sumber