Ich sehe oft Code, der absichtliche Rechtschreibfehler gebräuchlicher Wörter enthält, die zu guten oder schlechten Wörtern geworden sind:
klass
oderclazz
für den Unterricht :Class clazz = ThisClass.class
kount
für die Zählung in SQL:count(*) AS kount
Persönlich finde ich, dass dies die Lesbarkeit verringert. In meiner eigenen Praxis habe ich nicht allzu viele Fälle gefunden, in denen ein besserer Name nicht hätte verwendet werden können - itemClass
oder recordTotal
.
Ein Beispiel aus den JavaDocs for Class zeigt dies in den Parametern:
public <U> Class<? extends U> asSubclass(Class<U> clazz)
Zeigt dies einen vernünftigen Anwendungsfall?
coding-style
variables
readability
naming
Nicole
quelle
quelle
cls
ist dies ein gebräuchlicher (in der Tat der eine idiomatische) Name für Variablen / Argumente, die tatsächliche Klassen enthalten (die, die Sie mit demclass
Schlüsselwort deklarieren und für die alles eine Instanz ist).typedef char ínt
?iñt
. Da ist mein Plan für die Weltherrschaft.Class c
).Antworten:
IMHO, das ist eine sehr schlechte Idee. Reservierte Wörter sind aus einem bestimmten Grund reserviert. Dadurch wird die Lesbarkeit beeinträchtigt.
Auch Ihrem zweiten Punkt stimme ich voll und ganz zu. Eine Variable zu
class
benennen, selbst wenn Sie es könnten, wäre genauso schlecht wie sietmp
oder zu benennena
. Was für eine Klasse? Eine Klasse von was? Namen sollten beschreibend sein.quelle
Pythons Style Guide weist auf dieses Problem hin und schlägt Folgendes vor:
Dies scheint eine ziemlich gute allgemeine Regel zu sein, vorausgesetzt, sie widerspricht nicht der Semantik einer bestimmten Sprache.
quelle
union
es sich um ein Schlüsselwort handelt (wie in C)? Wirst du es nennen,foo
nur weil es nicht so aussehen sollteunion
?cls
ist der Standardargumentname für die Klassenmethode. Auch zum Beispiel in Django haben Objekte.id
Attribute, die natürlich mit derid
eingebauten Funktion in Konflikt stehen .merge
Methode wäre noch eine Dokumentation erforderlich, in der ausdrücklich angegeben wird, dass sie die Gewerkschaft implementiert und aus rein technischen Gründen umbenannt wurde.Code-Geruch.
Der obige Code sagt mir nichts über die beabsichtigte Verwendung der Variablen.
Gleiches Problem
Für den obigen Code sollte keine an den Variablennamen angehängte Schlüsselwortzeichenfolge erforderlich sein. Wenn Sie Typen anhand des Variablennamens identifizieren müssen, ist Ihr Code zu lang. Kondens-Refaktor.
quelle
Class<T>
Parameter erhalten, und dies kann sinnvoll sein. Ich bin nicht einverstanden, dass es ein Codegeruch ist.Persönlich denke ich, dass es eine vollkommen gültige Option für Ihren Codestil ist.
Es handelt sich um reservierte Wörter, damit der Compiler nicht entscheiden muss, ob Sie den Sprachmechaniker oder Ihre Variable gemeint haben. In diesem Sinne impliziert dies, dass erwartet wird , dass Menschen eine Variable wie ein reserviertes Wort benötigen.
In der mit JDK 1.6 R21 gebündelten Quelle finde ich 917 Vorkommen von "clazz". Anscheinend hielten sie es für einen akzeptablen Stil.
Wie fühlt sich Ihr Team dabei? Wenn du denkst, dass es schlecht ist, aber die anderen 9 Jungs in deinem Team denken, dass es gut ist, dann musst du die Kugel beißen und akzeptieren. Solange es Kommunikation darüber gibt, was in Ordnung ist und was nicht, und Sie Probleme ansprechen, die Sie sehen, wenn Sie sie sehen, sollte es in Ordnung sein.
Wie Ihr Team den Code-Stil bewertet, ist wichtiger als meine Meinung oder die Meinung anderer in diesem Beitrag . Dies gilt auch für alle anderen Entscheidungen zum Codestil.
quelle
klass
undclazz
das ist eine schlechte Sache. Sie müssen konsequent sein, damit sie es nur einmal lernen müssen. Und im Idealfall ist dies auch in den Richtlinien für den Teamstil festgelegt, so dass es keine große Überraschung ist.Vorsätzliche Rechtschreibfehler, um reservierte Wörter zu vermeiden, sind keine gute Idee.
Rechtschreibfehler sind schwer von der korrekten Schreibweise zu unterscheiden und erschweren daher die Lesbarkeit des Codes.
Rechtschreibfehler sind schwer zu merken, so dass mehrere inkonsistente Rechtschreibfehler wahrscheinlich im Code konkurrieren, was das Schreiben und Lesen von Code erschwert.
Reservierte Wörter beziehen sich auf die Sprache, die zur Lösung des Problems verwendet wird, nicht auf das Problem selbst. Ein Variablenname sollte auf ein Konzept verweisen, das mit dem Problem zusammenhängt.
Es ist daher besser, einen alternativen, beschreibenden Namen zu wählen oder das reservierte Wort wie folgt zu qualifizieren , wenn es keine zufriedenstellende Alternative gibt :
quelle
Class clazz
riecht nach "Ich habe nicht versucht, einen guten Namen zu finden". Eine Variable repräsentiert immer etwas, und ein guter Name beschreibt das. Ich lehne es ab, mir vorzustellen, dassclazz
zum Beispiel unter keinen Umständen der bestmögliche Name ist. Handelt es sich um eine Referenz auf eine Klasse -> Klassenreferenz, handelt es sich um eine Kopie eines Klassenobjekts -> class_copy usw. Eventuell wird auch "class" verworfen und nur das beschreibende Wort verwendet, zHier ist clazz die Zielklasse, für die die Prüfung durchgeführt werden soll
würde viel besser beschreiben, wofür der Parameter verwendet wird, als es clazz jemals tun wird.
quelle
classToBeAccessed
ist in der Tat ein guter Name (classToBeChecked
wäre vielleicht noch besser).Wenn sie einen reservierten Namen für eine Variable verwenden, handelt es sich um eine Variable mit schlechtem Namen. Auch wenn es sich um einen legitimen Namen handelt, z. B. Class für Classroom-Software.
Schlecht benannte Variablen sind ein Zeichen für schlecht durchdachten oder zufälligen Code. Achten Sie auf andere Fallstricke in der von Ihnen verwalteten Software.
quelle
Ich halte absichtliche Rechtschreibfehler oder Abkürzungen für eine gute Idee, wenn sie sorgfältig und konsequent verwendet werden .
Betrachten Sie in Java:
Bei der Verwendung von Rechtschreibfehlern ist das reservierte Wort eindeutig das beste Wort für den Job. Es gibt zwei Stellen , an denen Sie Rechtschreibfehler vermeiden können.
Im ersten Fall ist es ziemlich offensichtlich, dass Faulheit selten eine gute Richtlinie für die Erstellung von Qualitätscode ist. Wählen Sie im zweiten Fall eine wirklich kurze Variable. Das tun Mathematiker ständig und Programmierer für Indizes. Es gibt keinen Grund, sich darauf zu beschränken, dies für Indizes zu tun, wenn es sich wirklich nur um eine Dummy-Variable handelt:
Sie verlieren nichts mit kurzen Variablennamen, wenn die Methode oder die Struktur des Codes Ihnen sagt, was da sein muss.
quelle
nextMeeting(MeetingRoom r)
ist reichlich. Was ist dasmeetingRoom
Sie es bekommen? Wenn ja,nextMeeting(int meetingRoom)
würde ich verstehen, aber es geht darum, kurze Variablennamen zu verwenden, wenn die Informationen bereits aus anderen Quellen verfügbar sind .Klass
war eine Alternative, als es ein reserviertes Wort gab . Ich empfehle keine Rechtschreibfehler, wenn die ursprüngliche Schreibweise verfügbar ist!Ich habe
Class klass
beim Reflektieren legitime Verwendungen gesehen, bei denen Sie tatsächlich mit einer Instanz derClass
Klasse arbeiten.quelle
userClass
oder eine andere Option verwenden sollten.classInstance
überklass
.classInstance
ziemlich redundant. Außerdem könnte ich mir sowas vorstellenclass klass; Object classInstance = klass.newInstance;
.Für lokale Variablen und formale Argumente spielt es keine Rolle.
Jeder Name ist in Ordnung, solange er nicht absichtlich irreführend oder störend ablenkt. In deinem Beispiel:
Es spielt keine Rolle, ob die einzelne lokale Variable "clazz" oder "klass" oder "cls" oder einfach "c" ist. Ich würde wahrscheinlich nur den Ausdruck inline:
Die Länge eines Variablennamens sollte sich auf den Gültigkeitsbereich der Variablen beziehen. Für lokale Variablen in kurzen Methoden (und sie sollten alle kurz sein) sind sehr kurze Namen in Ordnung.
quelle
ClassUtils.loadClass(benchmark.generatedClass())
=>benchmark.generatedClass()
-ClassUtils.loadClass
auf dem Weg verlorenIch denke, Rechtschreibfehler sind immer eine schlechte Idee. Es ist einfach nicht schön für deine Leser. Ich würde mich fragen, ob ich etwas verpasst habe, wenn ich das Wort sehe
klass
. (Meinten sieclass
, oder meinten sie den Piraten?) Zumindest für mich sind alle Rechtschreibfehler, die ich erkenne, irritierend.Für die sehr wenigen Fälle, in denen das reservierte Wort wirklich die einzige signifikante Sache ist, die über die Variable bekannt ist, würde ich die folgenden Alternativen verwenden:
Wenn es sich um ein Funktionsargument handelt, verwenden Sie
aClass
anstelle vonclass
.Wenn es sich um eine lokale oder Mitgliedsvariable handelt, verwenden Sie
myClass
anstelle vonclass
.Wenn es sich um einen Accessor handelt, verwenden Sie
getClass()
anstelle vonclass()
.Natürlich ist das hinzugefügte Präfix ziemlich sinnlos und sollte daher immer nur als letzter Ausweg verwendet werden. Aber zumindest stört es nicht den mentalen Parser Ihres Lesers, und es ist eine ausfallsichere Möglichkeit, reservierte Wörter zu vermeiden.
quelle
Ein Vorteil der kreativen Rechtschreibung ist die bessere Suchfähigkeit. Ich denke, es ist viel einfacher, eine vollständige Codesuche nach einzigartigen Dingen durchzuführen, als nach gebräuchlichen Wörtern, bei denen Sie zu oft alle falschen Dinge finden, und 1000 von ihnen. Als Beispiel hatte ich kzpg.com. Google das jetzt und du wirst nur ein paar Treffer sehen. Es ist einzigartig und daher sehr auffindbar.
Aber zu einem gewissen Grad denke ich, dass diese Frage eher der Meinung als der Substanz entspricht. Ich bin auf Forth aufgewachsen, wo es nur um Worte ging, und viele davon. Man lernte sehr kreativ zu werden, um die Finger zu retten. Am Ende hatte ich ungefähr 640.000 Zeichen, mehr oder weniger in meiner Quellenbasis. Daher war es wichtig, die Worte kurz zu halten, um die Arbeit zu erledigen.
quelle