web-dev-qa-db-fra.com

Conventions de nommage JavaScript

Je sais qu'il y a beaucoup de controverse (peut-être pas, mais au moins des arguments) sur la convention de nommage qui convient le mieux à JavaScript.

Comment nommez-vous vos variables, fonctions, objets et autres?

Je laisserai mes propres pensées à ce sujet, car je ne travaille pas sur JS depuis longtemps (quelques années seulement) et je viens de recevoir une demande de création d'un document avec des conventions de nommage à utiliser dans nos projets au travail. . Je suis donc en train de regarder (Google), et il y a tellement d'opinions différentes.

Les livres que j'ai lus sur JS utilisent également des conventions de nommage différentes, mais ils sont tous d'accord sur un point: "Trouvez ce qui vous convient et respectez-le." Mais maintenant que j'ai beaucoup lu, j'ai découvert que comme certaines des autres méthodes un peu mieux que ce que je suis habitué à maintenant.

249
peirix

Je suis conventions de code de Douglas Crockford pour javascript. J'utilise également son outil JSLint pour valider l'application de ces conventions.

200
Geoff

Comme le dit Geoff, quoi Crockford dit c'est bien.

La seule exception que je suis (et 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');

160
Deebster

Vous pouvez suivre ceci Guide de style Google JavaScript

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

EDIT: Voir la belle collection de Guides de style JavaScript et embellisseurs .

108
Pavel Hodek

Une convention que j'aimerais essayer consiste à nommer les modules statiques avec le préfixe "the". Regarde ça. Lorsque j'utilise le module de quelqu'un d'autre, 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 songe à essayer une convention dans laquelle les modules statiques utilisent "le" pour indiquer leur préexistence. Quelqu'un at-il vu un meilleur moyen que celui-ci? Ressemblerait à ceci:

define(['theLightbox'],function(theLightbox) {
  theLightbox.show('hello') // since I recognize the 'the' convention, I know it's static
})
9
SimplGy

Je pense qu’outre quelques limitations de syntaxe; les conventions de dénomination sont très indépendantes de la langue. Je veux dire, les arguments en faveur de c_style_functions et de JavaLikeCamelCase pourraient tout aussi bien être utilisés dans le sens opposé, c'est simplement que les utilisateurs de langage ont tendance à suivre les auteurs.

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

6
Javier

C'est une question individuelle qui pourrait dépendre de votre façon de travailler. Certaines personnes aiment mettre le type de variable au début de la variable, comme "str_message". Et certaines personnes aiment utiliser des traits de soulignement entre leurs mots ("my_message"), tandis que d'autres préfèrent les séparer par des lettres majuscules ("myMessage").

Je travaille souvent avec d’énormes bibliothèques JavaScript avec d’autres personnes. Par conséquent, les fonctions et les variables (à l’exception des variables privées à l’intérieur des fonctions) doivent commencer par le nom du service pour éviter les conflits, comme "guestbook_message".

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

2
Ivar