Ich habe ein Problem beim Verstehen, wie die camelCase-Syntax auf einige meiner Variablennamen angewendet wird .
Wie soll ich zum Beispiel ein Wort wie "Telefonnummer" in Kamelschreibweise richtig schreiben? Ist es phoneNumber
oder phonenumber
? Ähnlich ist es mit "Benutzername", username
oder userName
?
Ich denke , es ist nicht richtig mit Kamel Fall sieht wie motorCycle
, passWord
, sunDay
, setUp
oder , waveLength
da diese nur jeweils ein Wort. Ich denke, das könnte der Grund sein, warum es heißt, hashMap
aber hashtable
im letzten Fall auch in Kamel-Fällen ohne das Kapital, weil Hash-Tabelle ein Wort ist, während Hash-Map zwei Wörter sind.
Aber wenn das Motorrad eine Farbe hat, würde es dann sein, motorcycleColor
da ein Wort verkettet ist? Ist das richtig oder soll es sein phoneNUmber
, waveLength
, sunBlock
und auch sunDay
für den Sonntag der Woche?
Warum zum Beispiel wird die Methode aufgerufen, getISOCountries
während sie sagt, dass HttpHeaders
z. B. nicht klar ist, was klein geschrieben wird, wenn wir eine Methode wie String camelCaseString = dog.toCamelCase()
oder haben interface CamelCase
.
username
ist, was es ist, es ist ein Rufzeichen, nicht der "Name des Benutzers", so ist es eher wie Motorrad als Vorname oder Nachname (die camelcased werden sollte)street
dies eine Klasse undname
eines ihrer Attribute / Datenelemente sein sollte.Antworten:
Sie sollten den Buchstaben nach dem "normalen" Leerzeichen groß schreiben (wenn Sie einen Buchstaben anstelle des Quellcodes schreiben würden). Ihre erste Annahme ist richtig:
motorcycle
, nichtmotorCycle
.hashMap
, nichthashmap
.sunday
nichtsunDay
.dayOfWeek
, nichtdayofweek
.quelle
hashmap
ein einziges Wort, obwohl wir ironischerweise nichts dafür tuntree map
. AchselzuckenhoneyBee
(und zwarhoneybee
nicht "Honigbiene", sondern "Honigbiene") undbutterfly
.setUp
Fall ist zwar ein Randfall , es ist ein einzelnes Wort, aberJUnit
historisch hat er den Namen der Fixture-InitialisierungsetUp
.JUnit
hat es recht, der Rest von uns ist der Randfall. :)tearDown
: DTeil 1
Ich denke, was Sie auslöst, ist, dass einige Ihrer Beispiele zusammengesetzte Wörter sind , andere nicht.
Zusammengesetzte Wörter folgen nicht der Schreibweise in Groß- und Kleinschreibung für das zweite Wort im zusammengesetzten Wort.
So ist es
motorcycle
und nichtmotorCycle
.Aber "Telefonnummer" ist kein zusammengesetztes Wort und würde der Schreibweise von Kamelkästen folgen. dh
phoneNumber
.Und das führt zu:
motorcycleColor
.Wenn ich mich nicht erinnern kann, ob ein Wort wirklich ein zusammengesetztes Wort ist oder nicht, schaue ich im Wörterbuch nach, um sicherzugehen.
Teil 2
Zwei Ihrer Beispiele sind etwas kniffliger.
Sie sind knifflig, weil manche sie als "Hashmap" und "Hashtable" buchstabieren. Laut dem Wörterbuch, das ich gerade überprüft habe, handelt es sich um separate Wörter und nicht um ein zusammengesetztes Wort. Also der richtige Kamelkoffer wäre
hashMap
undhashTable
. Nicht jedes Team hält sich an diese Konvention, also müssen Sie Ihre Teamkollegen fragen, was sie bevorzugen, und sich dann daran halten. Konsistenz ist in diesem Fall wichtiger als das, was ein Wörterbuch für richtig hält.* Einige werden darüber streiten, dass der Sonntag ein zusammengesetztes Wort ist, da andere Wochentage es nicht sind, aber für die Zwecke dieser Frage werde ich dieses Problem umgehen. Es ist am einfachsten, es als zusammengesetztes Wort zu behandeln und daher kein Kamelfall.
quelle
if (currentDay == thorsDay) {...
Hmm ... aussieht. Schade , dass Bibliotheken dies nicht als Formatierungsoption haben, wenn Sie den vollständigen Namen des Wochentags erhalten möchten.HashMap hashMap = new HashMap();
Wie andere bereits betont haben, wird beim Zusammenfügen von Wörtern die Kamelschreibweise verwendet. Verwenden Sie Kamelkasten nicht innerhalb eines einzelnen englischen Wortes. Das Problem besteht darin, zu bestimmen, welche Verbindungen einzelne Wörter sind. Den Programmierern bleibt es überlassen, je nach ihren Englischkenntnissen unterschiedliche Entscheidungen zu treffen. Dies führt zu Inkonsistenzen in der Großschreibung, die fast so ärgerlich sind wie Rechtschreibfehler.
Um dies zu verhindern, sollten Programmierer einen Standardverweis (z. B. dictionary.com ) verwenden, wenn sie sich hinsichtlich der Schreibweise oder der Großschreibung nicht sicher sind. Auch wenn für Ihr Projekt eine einheitliche Benennung wichtig ist, gibt es keinen Ersatz für die Codeüberprüfung.
Wenn Sie eine einzige Referenz für Ihr Projekt auswählen, werden die meisten Argumente zu Groß- und Kleinschreibung gelöst. Es gibt einige Verbindungen wie Hashtable, die nicht in Wörterbüchern enthalten sind, sondern in den Java- und C # -APIs als einzelne Wörter großgeschrieben werden. Sie werden eine projektweite Entscheidung darüber treffen wollen. In Java ist es "HashMap", aber "Hashtable". IMO "Hashtable" ist eindeutig falsch; Es wird nie als einzelnes Wort angezeigt, außer als Name in einer API.
quelle
Der einfachste Weg, einen Kamelfall zu machen, ist die Wortabgrenzung.
Beispiele aus Ihrer Frage:
Wenn Sie es nicht in zwei Wörter aufteilen würden, sollten Sie auch keinen Kamelkasten verwenden. Ansonsten benutzt du es auf Silben und wie albern sieht das aus
quelle
setup
, und wenn Sie eine Funktion zum Einrichten von etwas haben, wird es aufgerufensetUp
.wavelength
oder davonwaveLength
abhängt, ob sich der fragliche Wert auf die Ausbreitungsgeschwindigkeit geteilt durch die Frequenz bezieht oder ob er sich auf die "Länge" (nicht notwendigerweise die Entfernung) einer Art Welle bezieht . Zum Beispiel wäre die Variable einer Audiosynthesebibliothek für die Anzahl der einer Welle zugeordneten Samples nichtwavelength
aberwaveLength
.WaveLength
wäre dies für sich genommen in den einfachsten Szenarien etwas vage [bezieht sich dies auf die Puffergröße oder die Länge des Schleifenabschnitts], aber die Wörter könnten durchaus in einem längeren Namen vorkommen.Hier stört eine Komplikation mit einfachem Englisch, wie man später Englisch missbraucht, um es mit den Leerraumregeln von Tokens in Programmierkontexten in Einklang zu bringen.
Von den von Ihnen angegebenen Beispielwörtern sind fast alle Verbindungen. Der Sonntag ist nicht so lange her, dass er als Verbindung entstanden ist, und er kann heute kaum noch als solche bezeichnet werden, zumal sein Engagement für die Sonne eher eine historische Kuriosität als ein wichtiger Bestandteil des religiösen und kulturellen Lebens ist ausblick englischsprachiger menschen.
Und auf Englisch sind die drei wichtigsten Möglichkeiten, eine Verbindung zu schreiben, offen (mit einem Leerzeichen zwischen den beiden Wörtern), getrennt und geschlossen (ohne Leerzeichen oder Bindestrich zwischen den beiden). Und obwohl es in bestimmten Situationen einige Regeln zum Silbentrennen offener Verbindungen gibt, gibt es nicht wirklich viele feste Regeln, um zu wissen, welche Form für eine bestimmte Verbindung verwendet wird, außer zu sehen, was andere Leute tun, und es gibt immer noch Zeiten, in denen Sie werden feststellen , zwei oder sogar alle drei Formen ( eggbeater , eggbeater und Eiklopfer zum Beispiel).
Hier wird die Telefonnummer fast immer offen geschrieben, daher sollte sie als zwei Wörter behandelt werden.
Und wenn Sie ein Token mit einer Kappe versehen, wird das Leerzeichen oder der Bindestrich entfernt und das zweite und nachfolgende Wort in Großbuchstaben geschrieben, daher
phoneNumber
oderPhoneNumber
entsprechend Ihrer Konvention.Das Ding , das macht
phoneNumber
seltsam erscheinen , ist wahrscheinlich , dass es mehr ist allgemein als nur gegebenphone
in den meisten Kontexten oder wienumber
wenn der Kontext über eine Telefonverbindung.quelle
Stellen Sie die Konsistenz innerhalb der Codedatei sicher.
Konsistenz innerhalb des Code-Projekts fördern.
Bevorzugen Sie die Konsistenz innerhalb der Codebibliothek.
Die Verbindung von Wörtern zur Darstellung von Konzepten ändert sich, wenn wir mit einer bestimmten Agglutination vertraut werden .
Zum Beispiel...
Beachten Sie, dass sich die StackExchange-Rechtschreibprüfung nicht entscheiden kann. 'Telefonnummer' am Ende des obigen Satzes war in Ordnung, kennzeichnet jedoch die Nummer am Anfang des Satzes (mit oder ohne Großbuchstaben).
So sehr sich fast jeder wünscht, es gäbe "einen richtigen Weg", um Dinge zu tun, wenn es um Sprache geht, die es niemals geben kann. Bis zum Abschluss Ihres Projekts wird sich die Nutzung wahrscheinlich geändert haben. Sicherlich hat sich Ihr Verständnis geändert und die Funktionalität der Methode / et.al. wird sich wohl auch geändert haben. (In diesem Fall sollten Sie den Namen wahrscheinlich entsprechend ändern.)
quelle
Aus einer rein technischen (US) Perspektive, in der xxx-yyy-zzzz die "Telefonnummer" ist, wird der xxx-Teil ordnungsgemäß als Vorwahl bezeichnet, der yyy-Teil wird ordnungsgemäß als Vorwahl bezeichnet austauschen, und die zzzz wird ordnungsgemäß als die Nummer bezeichnet.
Da "Telefonnummer" nicht nur (noch) kein zusammengesetztes Wort ist, sondern, wenn es eins wird, fälschlicherweise auf etwas außerhalb der Absicht seines Erstellers verweist, würde ich sagen, dass die camelCase-Syntax für jede Variable, die darauf verweist, phoneNumber erfordert, aber if Wenn Sie mit dem eigentlichen Telefonsystem nichts anfangen wollen, würde ich phoneExchangeNumber für die siebenstellige und phoneACExchangeNumber für die zehnstellige Version verwenden.
quelle