Parece que erros fora de um são um dos erros de programação mais comuns (se não os mais comuns) (consulte /software/109/what-are-common-mistakes-in-coding e sabedoria convencional).
Qual é a razão pela qual isso é tão comum? Tem algo a ver com o funcionamento do cérebro humano?
O que podemos fazer para evitar ser vítima de um erro?
Respostas:
É algo que tem a ver com o funcionamento do cérebro humano. Estamos preparados para ser "suficientemente bons" para tarefas que normalmente não exigem precisão de nível de engenharia. Há uma razão pela qual os casos com os quais temos mais problemas em lidar são chamados de casos "de ponta".
Provavelmente, a melhor maneira de evitar erros isolados é o encapsulamento. Por exemplo, em vez de usar um loop for que itera uma coleção por índice (de 0 a contar - 1), use um loop para cada estilo com toda a lógica de onde parar o enumerador. Dessa forma, você só precisa acertar os limites uma vez, ao escrever o enumerador, em vez de toda vez que percorrer a coleção.
fonte
Há algo de especial sobre como o cérebro lida com bordas e bordas.
Embora seja mais fácil para o cérebro pensar em termos de amplitude e espaço , focar em uma borda parece exigir um pouco mais de atenção. Aqui está como isso acontece, perda momentânea de atenção ou concentração insuficiente e você perdeu a fronteira.
Outro pequeno acréscimo ao problema é que diferentes ambientes de programação têm diferentes sistemas de indexação começando em 0 ou 1, o que pode adicionar confusão às pessoas ativamente expostas aos dois tipos de ambientes.
fonte
Eu acredito que é devido à mudança de contexto. No nosso dia-a-dia, tendemos a usar índices baseados em 1. Por isso, nosso cérebro é incapaz de queimar o comportamento correto na memória de longo prazo.
fonte