Wird die Verwendung von Ein-Buchstaben-Variablen in Java empfohlen? In Code-Snippets oder Tutorials werden sie häufig angezeigt. Ich kann mir nicht vorstellen, dass ihre Verwendung empfohlen wird, da der Code dadurch relativ schwer zu lesen ist und ich nie sehe, dass sie in anderen Programmiersprachen verwendet werden!
java
coding-standards
variables
William Edwards
quelle
quelle
Antworten:
Dinge richtig zu benennen ist schwierig. Sehr schwer. Wenn Sie es anders sehen, können Sie dies auch so verstehen, dass richtig benannte Dinge wichtig sind. (Andernfalls, warum hätten Sie sich die Mühe gemacht, es zu benennen?)
Aber manchmal sind die Namen der Dinge einfach nicht wichtig. Deshalb haben wir zum Beispiel anonyme Funktionen ("Lambdas"), weil es manchmal einfach nicht wert ist, Dinge zu benennen.
Es gibt viele Beispiele, in denen einzelne Buchstaben (oder sehr kurze) Variablennamen angemessen sind:
i
,j
,k
,l
Für die Schleifenindizesk
undv
für den Schlüssel und Wert in einer Karten
für eine Nummer (zB inMath.abs(n)
)a
,b
,c
(Für beliebige Objekte zB inmax(a, b)
)e
für das Element in einem generischenfor each
Schleifef
für die Funktion in einer übergeordneten Funktionp
für die Prädikatfunktion in einem FilterT
,T1
,T2
, ... für Typ - VariablenE
für Typvariablen, die den Elementtyp einer Sammlung darstellenR
für eine Typvariable, die den Ergebnistyp einer Funktion darstelltex
für die Ausnahme in einercatch
Klauselop
für die Operation in einer Karte oder Faltes
zur Angabe des Plural, dh einer Sammlung (z. B.ns
für eine Sammlung von Zahlenxs
undys
für zwei beliebige Sammlungen von Sammelobjekten)Sie kommen in so ziemlich jeder Sprache vor, die ich kenne (und wahrscheinlich auch in denen, die ich nicht kenne). Haskell, F #, ML, Ruby, Python, Perl, PHP, C #, Java, Scala, D, Go, C ++, C, Sie nennen es.
quelle
k
undl
in Schleife Indizes, die zu weit ist (Sie sollten nicht so viele verschachtelte Schleifen haben zu beginnen; Extrakt sie Funktionen) . Persönlich verwende ich nie mehr als eine 1-Buchstaben-Variable pro Funktion, aber ich schieße für 0.l
oderlen
wird für eine Länge undarr
für ein Array verwendet (zB:)for(var i=0; l=arr.length; i<l; i++)
. Auchfn
kann verwendet werden , anstattf
, wenn Sie auf eine Funktion beziehen.Wenn Ihre Schleife nichts anderes tut, als eine Variable zum Zählen zu verwenden
dann ja, das ist der beste Name, den Sie verwenden könnten. Alles, was länger ist, kann die Semantik unmöglich deutlicher machen, aber das Lesen dauert viel länger.
Wenn die Variable innerhalb der Schleife verwendet wird, kann ein aussagekräftiger Name hilfreich sein.
Wenn Ihre Variable methodenweit verwendet wird, sollte ihr Name länger sein. Wenn es klassenweit verwendet wird, sollte sein Name völlig selbsterklärend sein, andernfalls wird es mit ziemlicher Sicherheit die Klarheit Ihres Codes verringern.
Kurz gesagt, je größer der Gültigkeitsbereich der Variablen ist, desto länger muss ihr Name sein.
quelle
index
wenn ich zum Beispiel über ein Array iteriere.i
ist es ein richtiges Wort mit einer genau definierten Bedeutung, nämlich "Index, um den Sie sich nicht zu viele Sorgen machen müssen". Aber ich denke, es ist eine Frage der Vertrautheit. Wenn Sie viel von Haskell lesen, werden Sie daran gewöhnt,m
als Monade ,f
als Funktor ,x
als Objekt ,xs
als Liste vonx
s usw. zu lesen .i
der beste Name ist, den Sie für eine Schleife verwenden können, die eine Variable nur zum Zählen verwendet. In diesem Fall würde ich liebercount
als Variablennamen verwendet sehen: sofort verständlich.for (int count = 0; count < 10; count++)
oderwhile (count--)
.Wenn ich den Code in Kilians Antwort lese, glaube ich nicht, dass es eine Schleife und eine Variable gibt, und sie hat den Typ int und einen Namen, und der Name ist i und sie ist mit 0 initialisiert. .. ". Ich denke nur "loop ...", wo die drei Punkte für unwichtige Details stehen, über die ich nicht einmal nachdenke. Nach Meinung meines Programmierers existiert diese Variable nicht wirklich, es ist nur ein Artefakt, das ich eingeben muss, wie das for (;;) {}, das es zu einer Schleife macht.
Da diese Variable nicht einmal in meinem Kopf existiert, warum sollte ich ihr einen Namen geben, der über das absolut Notwendige hinausgeht?
quelle
i
, sondern_
für die offensichtlich bedeutungslose Variable zu verwenden. Aber nicht jeder ist mit Prolog vertraut, und es würde wahrscheinlich mehr Aufmerksamkeit erregen, als es entfernt.for (...)
Header verwendet wird._
eine rechtliche Kennung ist wie jede andere, gab es eine neue Änderung , dass nicht verwendete lokale Variablen mit den Namen_
(oder ab_
) kann nicht erzeugen eine „nicht genutzte lokale Variable“ Warnung, obwohl Rubin normalerweise über sie warnt.Wenn Sie die Buchstaben i, j, k als Indizes innerhalb einer Schleife bezeichnen, ist dies in Java und anderen Programmiersprachen üblich. Obwohl es wahrscheinlich besser ist, für jede Style-Schleife eine zu verwenden, wie z
Anstatt von
In Java wurde dieser Schleifenstil erst vor relativ kurzer Zeit eingeführt. Dies mag der Grund sein, warum Sie es für Java eher bemerken, da das Durchlaufen der Indizes die häufigste Methode zum Durchlaufen eines Arrays oder einer Liste war.
Es gibt einige andere Fälle, in denen einzelne Buchstaben geeignet sein können, beispielsweise bei der Implementierung einer mathematischen Funktion, bei der einzelne Buchstaben wie n, x oder y bereits häufig vorkommen können. Aber im Allgemeinen, nein, geben Sie Ihren Variablen einen aussagekräftigen Namen.
quelle