Michl hat geschrieben:Umdenken muss man zwar bei Strings, ansonsten halte ich das zu über 90% auch so, dass meine statischen Arrays mit 0 anfangen (analog zu dynamischen Arrays). Wenn ich keine For-In Schleife nutze, gehe ich das Array von 0 bis High(MyArray) durch. Wobei eine Empfehlung lautet, immer Low(MyArray) bis High(MyArray) zu nutzen. Dadurch benötige ich keine Konstanten, die ein Array beschreiben. Ausnahme sind Konstanten, die globale Randbedingungen setzen und zum besseren Verständnis dienen (zumeist schmeiße ich alle globalen Konstanten in eine Unit "Definitions").
Sehe ich ähnlich.
Aufgrund der binären Verarbeitung der Zahlen in einem Prozessor ist die 0 als Basisindex näher an der physikalischen Verarbeitung. Damit kann man auch den Zahlenraum des Index-Datentyps (Integer) voll ausnutzen.
Diesen "datenlogischen" Hintergrund sollte man meines Erachtens immer anwenden, wenn sich keine Gründe aus dem logischen Inhalt des Arrays erschließen.
Das heißt: zur reinen Datenhaltung ist Index 0 angesagt, wie es für dynamische Arrays fest gelegt ist, um die Konsitenz zu wahren. Diese Konsistenz hilft, fehler zu vermeiden. Beispielsweise erlaubt es Visual Basic für jedes Modul den Basis-Index selbst festzulegen bzw. durch das Programm vorzugeben. Damit sind alle schnell verwirrt, wenn jeder die Indizes ein wenig anders gestaltet.
Hat der Index selbst eine Bedeutung, kann der Index dementsprechend entsprechend seiner Bedeutung gewählt werden - zum Beispiel ordnet man den Wochentagen üblicherweise die Zahlen 1 bis 7 zu oder die Monate werden von 1 bis 12 nummeriert. Hier wäre eine Abweichung dem Verständnis abträglich.