JavaScript naming conventions [closed]

JavaScript naming conventions [closed]

I know there is a lot of controversy (maybe not controversy, but arguments at least) about which naming convention is the best for JavaScript.
How do you name your variables, functions, objects and such?
I’ll leave my own thoughts on this out, as I haven’t been doing JS for long (couple of years, only), and I just got a request to create a document with naming conventions to be used in our projects at work. So I’ve been looking (google-ing) around, and there are so many different opinions.
The books I’ve read on JS also use different naming conventions themselves, but they all agree on one bit: “Find what suits you, and stick to it.” But now that I’ve read so much around, I found that I like some of the other methods a bit better than what I’m used to now.


Solution 1:

I follow Douglas Crockford’s code conventions for javascript. I also use his JSLint tool to validate following those conventions.

Related:  Javascript: Unicode string to hex

Solution 2:

As Geoff says, what Crockford says is good.

The only exception I follow (and have seen widely used) is to use $varname to indicate a jQuery (or whatever library) object. E.g.

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

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

Solution 3:

You can follow this Google JavaScript Style Guide

In general, use functionNamesLikeThis, variableNamesLikeThis, ClassNamesLikeThis, EnumNamesLikeThis, methodNamesLikeThis, and SYMBOLIC_CONSTANTS_LIKE_THIS.

EDIT: See nice collection of JavaScript Style Guides And Beautifiers.

Solution 4:

One convention I’d like to try out is naming static modules with a ‘the’ prefix. Check this out. When I use someone else’s module, it’s not easy to see how I’m supposed to use it. eg:

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

I’m thinking about trying a convention where static modules use ‘the’ to indicate their preexistence. Has anyone seen a better way than this? Would look like this:

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

Solution 5:

I think that besides some syntax limitations; the naming conventions reasoning are very much language independent. I mean, the arguments in favor of c_style_functions and JavaLikeCamelCase could equally well be used the opposite way, it’s just that language users tend to follow the language authors.

Related:  event.path undefined with Firefox and Vue.js

having said that, i think most libraries tend to roughly follow a simplification of Java’s CamelCase. I find Douglas Crockford advices tasteful enough for me.

Solution 6:

That’s an individual question that could depend on how you’re working. Some people like to put the variable type at the begining of the variable, like “str_message”. And some people like to use underscore between their words (“my_message”) while others like to separate them with upper-case letters (“myMessage”).

I’m often working with huge JavaScript libraries with other people, so functions and variables (except the private variables inside functions) got to start with the service’s name to avoid conflicts, as “guestbook_message”.

In short: english, lower-cased, well-organized variable and function names is preferable according to me. The names should describe their existence rather than being short.