Off-by-One-Fehler scheinen einer der häufigsten (wenn nicht sogar der häufigste) Programmierfehler zu sein (siehe /software/109/what-are-common-mistakes-in-coding) und konventionelle Weisheit).
Was ist der Grund, warum diese so häufig sind? Hat das etwas mit der Funktionsweise des menschlichen Gehirns zu tun?
Was können wir tun, um zu verhindern, dass ein Fehler zum Opfer fällt?
Antworten:
Es hängt irgendwie damit zusammen, wie das menschliche Gehirn arbeitet. Wir wollen für Aufgaben "gut genug" sein, die normalerweise keine Präzision auf Ingenieurniveau erfordern. Es gibt einen Grund, warum die Fälle, mit denen wir die meisten Probleme haben, "Randfälle" genannt werden.
Der wahrscheinlich beste Weg, um Fehler zu vermeiden, ist die Kapselung. Anstatt beispielsweise eine for-Schleife zu verwenden, die eine Auflistung nach Index durchläuft (von 0 bis count - 1), verwenden Sie eine For-Each-Style-Schleife mit der Logik, an welcher Stelle der Enumerator anzuhalten ist. Auf diese Weise müssen Sie die Schranken beim Schreiben des Enumerators nur einmal richtig stellen, anstatt jedes Mal, wenn Sie die Auflistung durchlaufen.
quelle
Es ist etwas Besonderes, wie das Gehirn mit Grenzen und Kanten umgeht.
Während es für das Gehirn einfacher ist, in Bereichen und Räumen zu denken , scheint die Fokussierung auf eine Kante etwas mehr Aufmerksamkeit zu erfordern. Hier ist, wie es passiert, vorübergehender Aufmerksamkeitsverlust oder ungenügende Konzentration und Sie haben die Grenze verpasst.
Eine weitere leichte zusätzlich zu dem Problem ist , dass verschiedene Programmierumgebungen verschiedene Indexierungssysteme haben entweder 0 oder 1 beginnen , die möglicherweise Verwirrung für die Menschen aktiv an den beiden Arten von Umgebungen ausgesetzt hinzufügen.
quelle
Ich glaube, es liegt am Kontextwechsel. In unserem täglichen Leben verwenden wir in der Regel 1-basierte Indizes. Aus diesem Grund ist unser Gehirn nicht in der Lage, das richtige Verhalten in das Langzeitgedächtnis einzubrennen.
quelle