Conventions de nommage JavaScript [fermé]

je sais qu'il y a beaucoup de controverse (peut-être pas de controverse, mais des arguments au moins) sur la convention de nommage qui est la meilleure pour JavaScript.

Comment nommer vos variables, fonctions, objets et autres?

je vais laisser mes propres pensées sur ce sujet, car je n'ai pas fait JS depuis longtemps (deux ans, seulement), et je viens d'obtenir une demande de créer un document avec des conventions de nommage pour être utilisé dans nos projets au travail. J'ai donc été regarder (google-ing) autour, et il ya tellement d'opinions différentes.

les livres que j'ai lus sur JS utilisent également différentes conventions de nommage eux-mêmes, mais ils sont tous d'accord sur un point: "trouvez ce qui vous convient, et s'y tenir."Mais maintenant que j'ai beaucoup lu, j'ai trouvé que j'aime certaines des autres méthodes un peu mieux que ce que j'ai l'habitude de faire maintenant.

227
demandé sur Xufox 2009-05-28 18:28:03

6 réponses

je suis de Douglas Crockford du code de conventions pour le javascript. J'utilise également son outil JSLint pour valider la conformité à ces conventions.

186
répondu Geoff 2017-12-25 11:44:49

comme dit Geoff, ce que dit Crockford est bon.

la seule exception que je suivrai (et que j'ai vu largement utilisée) est d'utiliser $varname pour indiquer un objet jQuery (ou n'importe quelle bibliothèque). Par exemple:

var footer = document.getElementById('footer');

var $footer = $('#footer');

153
répondu Deebster 2017-12-25 09:48:36

vous pouvez suivre ce Guide de style JavaScript de Google

en général, utilisez functionNamesLikeThis, variableNamesLikeThis, ClassNamesLikeThis, EnumNamesLikeThis, methodNamesLikeThis, et SYMBOLIC_CONSTANTS_LIKE_THIS.

EDIT: Voir la belle collection de JavaScript Guides de Style Et Beautifiers .

98
répondu Pavel Hodek 2016-11-26 00:07:11

une convention que j'aimerais essayer est de nommer les modules statiques avec un préfixe 'the'. Check this out. Quand j'ai utiliser un autre module, il n'est pas facile de voir comment je suis censé l'utiliser. par exemple:

define(['Lightbox'],function(Lightbox) {
  var myLightbox = new Lightbox() // not sure whether this is a constructor (non-static) or not
  myLightbox.show('hello')
})

je pense essayer une convention où les modules statiques utilisent 'le' pour indiquer leur préexistence. Quelqu'un a vu un de mieux que cela? Ressemblerait à ceci:

define(['theLightbox'],function(theLightbox) {
  theLightbox.show('hello') // since I recognize the 'the' convention, I know it's static
})
8
répondu SimplGy 2012-06-06 19:04:18

je pense qu'en plus de certaines limitations syntaxiques, le raisonnement des conventions de nommage est très indépendant du langage. Je veux dire, les arguments en faveur de c_style_functions et JavaLikeCamelCase pourraient tout aussi bien être utilisés de la manière opposée, c'est juste que les utilisateurs de langue ont tendance à suivre les auteurs de langue.

cela dit, je pense que la plupart des bibliothèques ont tendance à suivre grossièrement une simplification de la CamelCase de Java. Je trouve Douglas Crockford conseils de bon goût pour moi.

6
répondu Javier 2009-05-28 14:35:06

C'est une question individuelle qui pourrait dépendre de la façon dont vous travaillez. Certaines personnes aiment à mettre le type de variable au début de la variable, comme "str_message". Et certaines personnes aiment utiliser des underscores entre leurs mots ("my_message") tandis que d'autres aiment les séparer avec des lettres majuscules ("myMessage").

je travaille souvent avec d'énormes bibliothèques JavaScript avec d'autres personnes, donc des fonctions et des variables (sauf les variables privées à l'intérieur des fonctions) il faut commencer par le nom du service pour éviter les conflits, comme "guestbook_message".

en bref: les noms de variables et de fonctions en anglais, en minuscules, bien organisés sont préférables selon moi. Les noms devraient décrire leur existence plutôt que d'être courts.

2
répondu Ivar 2009-05-28 14:48:59