Кажется, что отдельные ошибки - одна из самых (если не самая большая) распространенная ошибка программирования (см. Https://softwareengineering.stackexchange.com/questions/109/what-are-common-mistakes-in-coding и общепринятая мудрость).
По какой причине они так распространены, связано ли это с тем, как работает человеческий мозг?
Что мы можем сделать, чтобы предотвратить попадание в жертву одной ошибки?
Ответы:
Это как-то связано с тем, как работает человеческий мозг. Мы готовы быть «достаточно хорошими» для задач, которые обычно не требуют точности инженерного уровня. Есть причина, по которой дела, с которыми у нас больше всего проблем, называются «крайними».
Вероятно, лучший способ избежать ошибочных ошибок - это инкапсуляция. Например, вместо использования цикла for, который выполняет итерацию коллекции по индексу (от 0 до count - 1), используйте цикл для каждого стиля со всей логикой остановки в встроенном в перечислитель. Таким образом, вам нужно получить правильные границы только один раз при написании перечислителя, а не каждый раз, когда вы перебираете коллекцию.
источник
Есть что-то особенное в том, как мозг обрабатывает границы и края.
В то время как мозгу легче мыслить с точки зрения диапазонов и пространств , фокусировка на крае, кажется, требует большего внимания. Вот как это происходит, мгновенная потеря внимания или недостаточная концентрация, и вы пропустили границу.
Еще одним небольшим дополнением к этой проблеме является то, что разные среды программирования имеют разные системы индексации, начинающиеся с 0 или 1, что может создать путаницу для людей, активно работающих с обоими типами сред.
источник
Я считаю, что это связано с переключением контекста. В нашей повседневной жизни мы склонны использовать индексы, основанные на 1. Из-за этого наш мозг не может записать правильное поведение в долговременную память.
источник