Anfängerfrage zu mehrdimensionalen Arrays



  • Ich schätze, das kommt dann mit der Zeit. Anfangs lernt man halt die Historie, später, wenn man es verstanden hat, gibt man aussagekräftigere Namen.



  • @zeropage Sogar am C64 in BASIC war man schon nicht mehr auf single-letter variable names begrenzt ...

    Ach, werdet doch glücklich mit ausgerechnet i und j.



  • @Swordfish sagte in Anfängerfrage zu mehrdimensionalen Arrays:

    Sogar am C64 in BASIC war man schon nicht mehr auf single-letter variable names begrenzt ...

    Stimmt, jop. Ich überspitze gerne in meinen Kommentaren 😉



  • Also ich finde i als Index OK. Sobald eine zweite Schleife dazukommt j ... nur mehr bedingt. In einem Fall wie diesem würde ich tatsächlich auch row und col verwenden - oder evtl. auch nur r und c. Typischerweise verwendet man ja i für die äussere Schleife und j für die innere - egal über was die beiden Schleifen iterieren. D.h. um zu sehen ob die äussere Schleife über die Zeilen oder Spalten geht, müsste man erst im Schleifenrumpf nachsehen. Das ist unnötige Hirnverdreherei.

    Wenn dagegen anhand der Struktur der Daten klar ist was die innere und was die äussere Schleife ist, können i und j schon "OK" sein. Man darf aber auch gerne besser verständliche Namen verwenden.

    IMO auch relevant: anstatt sich zu überlegen wie man die Indices bei verschachtelten Schleifen nennt, könnte man sich auch überlegen ob es nicht sinnvoll wäre die verschachtelten Schleifen los zu werden. Indem man die innere Schleife in eine eigene Funktion packt. Macht nicht immer Sinn, aber oft genug schon. Dann stellt sich die Frage nicht mehr, und kaum jemand wird beim Lesen ein Problem damit bekommen wenn der Index in beiden Funktionen i heisst.



  • @zeropage sagte in Anfängerfrage zu mehrdimensionalen Arrays:

    @Swordfish sagte in Anfängerfrage zu mehrdimensionalen Arrays:

    Sogar am C64 in BASIC war man schon nicht mehr auf single-letter variable names begrenzt ...

    Stimmt, jop. Ich überspitze gerne in meinen Kommentaren 😉

    War das nicht eher "unterspitzt"?

    Als überspitzt hätte ich es bezeichnet wenn du X genannt hättest, obwohl es von X bis zur Unterstützung von mehrstelligen Variablennamen noch viele Generationen gebraucht hat.



  • @zeropage sagte in Anfängerfrage zu mehrdimensionalen Arrays:

    Ich schätze, das kommt dann mit der Zeit. Anfangs lernt man halt die Historie, später, wenn man es verstanden hat, gibt man aussagekräftigere Namen.

    Das erinner mich an einen C++ on Sea 2020 Talk von Kate Gregory, "Naming is Hard: Let's Do Better":
    https://www.youtube.com/watch?v=MqugiGzricQ&t=4m15s

    Anfänger verinnerlichen schlechte Beispiele mit 1-Buchstaben Namen, ohne Fehlerbehandlung etc. als "so machen es die Profis". Gute Variablennamen, Fehlerbehandlung etc. sind von Anfang an wichtig, und in jedem Beispiel, so klein es auch sein mag.



  • @hustbaer sagte in Anfängerfrage zu mehrdimensionalen Arrays:

    War das nicht eher "unterspitzt"?

    Jop. Stimmt. Tatsächlich. Eine Übertreibung mit Minus-Zeichen.

    Gab zwar zwei- bis dreistellige Variablennamen, aber in den Anfängen hat imo jeder eh nur ein Zeichen benutzt. Am Ende stimmt wieder die Aussage.



  • @Swordfish sagte in Anfängerfrage zu mehrdimensionalen Arrays:

    Woher kommt eigentlich die Unsitte solchen Indizes single-letter Namen zu geben?

    @zeropage sagte in Anfängerfrage zu mehrdimensionalen Arrays:

    Wahrscheinlich aus BASIC-Zeiten? Wo der Interpreter nur einstellige Variablennamen verstand?

    Ich halte das auf jeden Fall für ein Mathematiker-Ding. Informatik nahm ja als Teilgebiet der Mathematik seinen Anfang. Würde mich nicht wundern, wenn sich bereits in weit über 100 Jahre alten Dokumenten ii, jj und kk für Indizes fänden.

    Ich muss auch sagen, dass ich das für Indizes recht gut finde. Die braucht man doch häufiger - so ein i ist halt schnell getippt und jeder sollte eigentlich wissen, was damit gemeint ist. Ansonsten bevorzuge ich eigentlich auch sprechende Namen aus mehreren Zeichen, aber bei a, b, c, i, j, k, m, n, t, u, v, x, y, z, w mache ich oft eine Ausnahme, wenn es aus dem Kontext hervorgeht 😉


Anmelden zum Antworten