Comment écrire cas de chameau pour des mots comme «numéro de téléphone», «motocyclette», «longueur d'onde», etc.

75

J'ai du mal à comprendre comment appliquer la syntaxe camelCase à certains de mes noms de variables.

Par exemple, comment dois-je écrire correctement un mot comme "numéro de téléphone" dans le cas d'un chameau? Est-ce phoneNumberou phonenumber? De même avec "nom d'utilisateur", est-ce usernameou userName?

Je pense qu'il ne semble pas juste avec le cas de chameau comme motorCycle, passWord, sunDay, setUpou waveLengthpuisque ceux - ci sont juste un mot chacun. Je pense que cela pourrait être la raison pour laquelle il est appelé hashMapmais aussi hashtabledans l'affaire des chameaux sans majuscule dans le dernier cas parce que hashtable est un mot alors que hash map est deux mots.

Mais si la motocyclette a une couleur, est-ce motorcycleColorqu’un mot est concaténé? Est - ce exact ou devrait - il phoneNUmber, waveLength, sunBlocket même sunDaypour le dimanche de la semaine?

Pourquoi, par exemple, la méthode est-elle appelée getISOCountriesalors qu'elle dit, HttpHeaderspar exemple, on ne sait pas ce qui devient en minuscule si nous avons une méthode comme String camelCaseString = dog.toCamelCase()ou interface CamelCase.

Connexes: https://english.stackexchange.com/questions/889/when-should-compound-words-be-written-as-one-word-with-hyphens-or-with-spaces

Niklas Rosencrantz
la source
7
Dans les cas où il vous est très difficile de dire si une phrase de deux mots est un mot composé, choisissez une capitalisation et respectez-la. Comme pour la plupart des conventions de codage, le plus important est d’être cohérent au sein d’un même projet.
Kevin
2
Excellente question, je me suis toujours demandé comment écrire "nomfichier" (et le mauvais "nomfichier"). Je pense que ce mot est écrit différemment de programmeur en programmeur ...
Ray
3
@PacMani Vous pourriez apprécier la discussion ici !
Jason C
4
@ 909Niklas, je supprimerais le "nom" entièrement autant que possible. Utilisez simplement "street" Si c'est une chaîne, c'est un nom sauf si c'est préjudiciable ou déroutant. usernameest ce qu’il est, c’est un indicatif d’appel, pas le "nom de l’utilisateur", c’est donc plus une motocyclette que un prénom ou un nom (qui devrait être mis dans un camelcas)
Peter Turner
2
@PeterTurner Certains programmeurs diraient que cela streetdevrait être une classe et nameun de ses attributs / données membres.
JAB

Réponses:

173

Vous devez mettre la lettre en majuscule après "normalement" un espace (lorsque vous écrivez une lettre au lieu d'un code source). Votre première hypothèse est correcte:

  • C'est une "motocyclette", pas un "motocyclette", donc votre variable doit être nommée motorcycle, pas motorCycle.
  • C'est une "carte de hachage", donc vous allez avec hashMap, pas hashmap.
  • "Dimanche" est un mot -> sunday, pas sunDay.
  • Alors que "jour de la semaine" serait dayOfWeek, pas dayofweek.
oezi
la source
4
Pour ce que ça vaut, mon équipe et moi-même utilisons généralement hashmapun seul mot, bien que, paradoxalement, nous ne le sachions pas tree map. haussement d'épaules
corsiKa
1
Eh bien, la moto est un peu un cas de bord (en fait, c'était à l'origine une moto, bien que ce soit quelque chose de différent); honeyBee(et pas honeybee, en fait pas "abeille" mais "abeille"), et butterfly.
orome
3
Le cas non-adressé setUpest un cas limite, cependant, c'est un seul mot, mais JUnithistoriquement, son initialisation de fixture est nommée setUp.
TC1
23
@ TC1 En fait, "setup" est un nom , jamais un verbe. "Configurer" la forme correcte de l'action. JUnita le droit, le reste d'entre nous sont l'affaire de bord. :)
Jason C
3
@JasonC Merci, enfin, il est logique de comprendre pourquoi la contrepartie est tearDown: D
TC1
44

Partie 1
Je pense que ce qui vous a fait trébucher, c'est que certains de vos exemples sont des mots composés , alors que d'autres ne le sont pas.

  • numéro de téléphone // pas un mot composé
  • moto // mot composé
  • longueur d'onde // mot composé
  • sunblock // mot composé
  • Dimanche // mot composé *
  • couleur de la moto // mot composé utilisé avec un mot non composé.

Les mots composés ne suivent pas la casse du chameau pour le deuxième mot du mot composé.

Donc c'est motorcycleet pas motorCycle.

Mais « numéro de téléphone » est pas un mot composé et il serait suivre la notation camel cas. c'est à dire phoneNumber.

Et cela conduit à: motorcycleColor.

Si je ne me souviens pas si un mot est vraiment un mot composé ou non, je le cherche dans le dictionnaire pour en être certain.

Partie 2
Deux de vos exemples sont un peu plus compliqués.

  • hash map
  • table de hachage

Ils sont délicats parce que certains vont les épeler "hashmap" et "hashtable". Selon le dictionnaire que je viens de vérifier, ce sont des mots séparés et non un mot composé. Donc, le bon cas de chameau serait hashMapet hashTable. Toutes les équipes ne suivent pas cette convention, vous devez donc demander à vos coéquipiers ce qu’elles préfèrent, puis vous en tenir à cela. La cohérence est plus importante dans ce cas que ce qu'un dictionnaire peut dire est correct.

* Certains diront que dimanche est un mot composé, car les autres jours de la semaine ne le sont pas, mais pour les besoins de cette question, je vais éviter cette question. Il est plus facile de traiter comme un mot composé et donc pas de cas de chameau.


la source
6
Les autres jours de la semaine étaient également composés: "lundi" <- jour de lune, mardi <- jour de Tiw, mercredi <- jour de Woden, jeudi <- jour de Thor, vendredi <- jour de Frigg, samedi <- jour de Saturne
kevin cline
6
@kevincline: Ces formes des noms des jours sont probablement considérées comme archaïques maintenant, alors ne comptez pas vraiment pour des raisons pratiques. ... Sauf si vous écrivez du code qui ressemble à if (currentDay == thorsDay) {...Hmm ... tant pis, les bibliothèques de dates n'ont pas cette option de formatage lorsque vous voulez obtenir le nom complet du jour de la semaine.
FrustratedWithFormsDesigner
15
@FrustratedWithFormsDesigner: le fait était que, dans les usages modernes, dimanche est un mot composé au même degré que lundi: rien du tout. C'est juste un hasard si le "Soleil" dans "Dimanche" peut rester seul, alors que "Le jour de la lune" a été abrégé en "Lundi"
kevin cline
6
Mieux encore, utilisez de meilleurs noms pour vos variables que hashMap ou hashTable. C'est une route glissante qui mène à cette merveilleuse ligne de code:HashMap hashMap = new HashMap();
Eric Andres
8

Comme d'autres l'ont fait remarquer, la casse de chameau est utilisée pour joindre des mots. N'utilisez pas de chameaux dans un seul mot anglais. Le problème consiste à déterminer quels composés sont des mots simples. Laissés à eux-mêmes, les programmeurs prendront des décisions différentes en fonction de leur connaissance de l'anglais. Cela conduit à des incohérences dans la capitalisation, qui sont presque aussi ennuyeuses que des fautes d'orthographe.

Pour éviter cela, les programmeurs doivent utiliser une référence standard (par exemple, dictionary.com ) lorsqu'ils ne sont pas certains de l'orthographe ou de la capitalisation. Malgré tout, si la cohérence des noms est importante pour votre projet, rien ne remplace la révision du code.

Choisir une seule référence pour votre projet résoudra la plupart des arguments concernant la capitalisation et l'orthographe. Certains composés, comme Hashtable, ne figurent pas dans les dictionnaires, mais sont capitalisés en tant que mots uniques dans les API Java et C #. Vous voudrez prendre une décision concernant l'ensemble du projet. En Java, c'est "HashMap" mais "Hashtable". La "table de hachage" de l'OMI est clairement incorrecte; il n'apparaît jamais sous la forme d'un mot unique, sauf sous la forme d'un nom dans une API.

Kevin Cline
la source
4

Le moyen le plus simple de traiter un cas de chameau est la délinéation de mots.

Exemples de votre question:

  • numéro de téléphone: phoneNumber
  • moto: moto
  • dimanche: dimanche
  • longueur d'onde: longueur d'onde

Si vous ne le divisez pas en deux mots, vous ne devriez pas non plus utiliser un étui à chameau. Sinon, vous l'utilisez sur des syllabes et à quel point ce look est idiot

  • AUXILIAIRE (Il s'agit d'un mot de 5 syllabes; sans parler du je qui ressemble à de la merde sur des polices sans monospace / sans empattement).
Jeff Langemeier
la source
5
le numéro de téléphone n’est pas son propre mot, mettez-le dans Google en un seul mot, il recherchera avec bonheur tout ce qui contient "Numéro de téléphone" et non le numéro de téléphone. Et la configuration n'est pas deux mots, ni mot de passe.
Jeff Langemeier
6
@JeffLangemeier Un tout petit petit reproche: «installation» est un nom, alors que «mettre en place» est un verbe. Par conséquent, si vous avez un objet représentant la configuration de quelque chose, il sera appelé setup, alors que si vous avez une fonction pour configurer quelque chose, elle sera appelée setUp.
bdesham
2
@bdesham Je m'en rends bien compte, mais je voudrais simplement rester à l'écart de setUp, puisqu'un verbe meilleur et moins ambigu serait initialisé, j'ai en fait complètement oublié la version verbale de setup.
Jeff Langemeier
1
Je pense que celui qui commence par "wa" pourrait être wavelengthou waveLengthdépendre de si la valeur en question est liée à la vitesse de propagation divisée par la fréquence, ou si elle se rapporte à la "longueur" (pas nécessairement la distance) d'une sorte d'onde . Par exemple, la variable d'une bibliothèque de synthèse audio pour le nombre d'échantillons associés à une onde ne serait pas wavelengthmais waveLength.
Supercat
2
@kevincline: dans les moteurs de synthèse audio, il est courant de disposer de tables d'ondes contenant un ou plusieurs échantillons complets d'une onde. Lorsque la lecture atteint la fin de la table, elle retourne au début (pour les moteurs simples) ou à un autre endroit de la vague. Certes, il WaveLengthserait un peu vague en soi dans les scénarios les plus simplistes (fait-il référence à la taille de la mémoire tampon ou à la longueur de la section de bouclage), mais les mots pourraient parfaitement apparaître sous un nom plus long.
Supercat
4

C’est là qu’une complication avec un anglais simple empêche un abus ultérieur de l’anglais de s’adapter aux règles d’espace blanc des jetons dans des contextes de programmation.

Parmi les exemples de mots que vous donnez, presque tous sont composés. Le dimanche n’est pas, c’est-à-dire qu’il s’agissait d’un complexe, mais il ya si longtemps qu’il ne peut plus être considéré comme tel aujourd’hui, d’autant plus que le fait de se consacrer au soleil est davantage une curiosité historique qu’un élément fort du contexte religieux et culturel. perspectives des anglophones.

Et en anglais, les trois principales façons d'écrire un composé sont ouvert (avec un espace entre les deux mots), un trait d'union et fermé (sans espace ni trait d'union entre les deux). Et bien qu'il existe certaines règles concernant la césure de composés ouverts dans certaines situations, il n'y a pas vraiment beaucoup de règles fermes pour savoir quelle forme est utilisée pour un composé donné au-delà de voir ce que les autres font, et il y a encore des moments où « ll trouver deux ou même trois formes ( eggbeater , eggbeater et batteur à oeufs par exemple).

Ici, le numéro de téléphone est presque toujours écrit ouvert, il devrait donc être traité comme deux mots.

Et lors de l'intercapage pour former un jeton, l'espace ou le trait d'union est supprimé et le deuxième mot et les mots suivants sont écrits dans la casse du titre, par conséquent phoneNumberou PhoneNumberselon le cas, en fonction de votre convention.

Ce qui phoneNumbersemble étrange, c'est probablement que c'est plus communément donné comme phonedans la plupart des contextes, ou numberlorsque le contexte concerne une connexion téléphonique.

Jon Hanna
la source
2

Assurer la cohérence dans le fichier de code.

Promouvoir la cohérence dans le projet de code.

Préférez la cohérence dans la bibliothèque de code.

La composition de mots pour représenter des concepts change à mesure que nous nous familiarisons avec une agglutination donnée .

Par exemple...

  • «téléphone» est devenu simplement «téléphone»
  • «téléphone» est devenu simplement «téléphone»
  • "numéro de téléphone" a parfois été transformé en "numéro de téléphone"
  • 'numéro de téléphone' est vite devenu 'numéro de téléphone'
  • le 'numéro de téléphone' est souvent abrégé en 'téléphone'
  • "téléphone portable", ou simplement "cellule" sont aujourd'hui d'usage courant
  • «homephone» et «workphone» pourraient bientôt devenir également courants

Notez que le correcteur orthographique StackExchange ne peut pas se décider. 'Phonenumber' à la fin de la phrase ci-dessus était correct, mais il marque celui du début de la phrase (en majuscule ou non).

Même si la plupart des gens souhaitent qu’il existe «une seule et même manière» de faire les choses, c’est impossible en matière de langage. À la fin de votre projet, l'utilisation aura probablement changé. Votre compréhension aura certainement changé et la fonctionnalité de la méthode / et.al. aura probablement changé aussi. (Dans ce cas, vous devriez probablement changer le nom en conséquence.)

DocSalvager
la source
-1

D'un point de vue strictement technique (États-Unis), où xxx-yyy-zzzz est ce que vous appelleriez normalement un "numéro de téléphone", la partie xxx est correctement désignée par l'indicatif régional, la partie yyy est correctement désignée par le numéro. échange, et le zzzz est correctement appelé le nombre.

Etant donné que non seulement "phonenumber" n'est pas (encore) un mot composé, mais s'il le devenait, il ferait référence incorrectement à quelque chose en dehors de l'intention de son créateur, je dirais que la syntaxe camelCase exigerait phoneNumber pour toute variable qui le référence, mais que vous fassiez n'importe quoi avec le système téléphonique actuel, j'utiliserais phoneExchangeNumber pour les sept chiffres et phoneACExchangeNumber pour les versions à dix chiffres.

TLM
la source
1
cela ne semble pas offrir quelque chose de substantiel sur les points faits et expliqués dans cette réponse avant qui a été posté sur 3 ans avant
moucheron