Какой стиль кода JavaScript самый лучший? Возможно, это вопрос, в котором сложно угодить всем. Поэтому давайте зададим другой вопрос: какой стиль кода самый популярный?

sideeffect.kr проанализировал открытый исходный код, размещённый на GitHub, и получил несколько интересных результатов. Давайте посмотрим.

ccode

Висячие запятые против ведущих запятых

Висячая запятая:

var foo = 1,
    bar = 2,
    baz = 3;

var obj = {
    foo: 1,
    bar: 2,
    baz: 3
};

Ведущая запятая:

var foo = 1
  , bar = 2
  , baz = 3;

var obj = {
    foo: 1
  , bar: 2
  , baz: 3
};

Висячая запятая: 92.345%; ведущая запятая: 7.655%. (На основе 1,100,251 коммита.)

Пробелы и табуляции

Сегодня все предпочитают пробелы. Использование отступов пробелами гарантирует, что разные разработчики и разные настройки редакторов увидят одинаковый результат.

Пробелы: 81.1%; табуляции: 18.9%. (На основе 2,019,550 коммитов.)

Добавлять ли пробел после имён функций

Без пробела

function foo() {
  return "bar";
}

С пробелом

function foo () {
  return "bar";
}

Без пробела: 67.424%; с пробелом: 32.576%. (На основе 1,212,488 коммитов.)

Есть ли пробел между параметрами и круглыми скобками

Без пробела

function fn(arg1, arg2) {
//or
if (true) {

С пробелом

function fn( arg1, arg2 ) {
  // ...
}

if ( true ) {
  // ...
}

Без пробела: 94.31%; с пробелом: 5.69%. (На основе 1,514,971 коммитов.)

Есть ли пробелы вокруг двоеточий в литералах объектов

Пробел после двоеточия

{
  foo: 1,
  bar: 2,
  baz: 3
}

Без пробела после двоеточия

{
  foo:1,
  bar:2,
  baz:3
}

Пробел до и после двоеточия

{
  foo : 1,
  bar : 2,
  baz : 3
}

Пробел после: 62.955%; без пробела: 22.891%; пробел до и после: 14.154%. (На основе 1,300,035 коммитов.)

Лично я считаю, что без пробела слишком тесно, и это мешает быстро различать ключи и значения. Что касается пробелов с обеих сторон, то, вероятно, придётся выравнивать двоеточия, чтобы это выглядело аккуратно. Судя по статистике, большинство программистов слишком ленивы, чтобы выравнивать двоеточия (или, возможно, IDE или редакторы большинства программистов недостаточно умны?).

Условные операторы

С пробелом

if (true) {
  //...
}

while (true) {
  //...
}

switch (v) {
  //...
}

Без пробела

if(true) {
  //...
}

while(true) {
  //...
}

switch(v) {
  //...
}

С пробелом: 78.276%; без пробела: 21.724%. (На основе 1,163,316 коммитов.)

Одинарные кавычки, двойные кавычки

Одинарные кавычки: 56.791%; двойные кавычки: 43.209%. (На основе 1,705,910 коммитов.)

Итог

Итак, самый популярный стиль кода таков:

  • Запятые в конце
  • Отступы пробелами
  • Без пробела после имени функции
  • Без пробела между параметрами функции и круглыми скобками
  • Пробел после двоеточия в литералах объектов, без пробела перед ним
  • Пробел после ключевых слов условных операторов

Популярное не обязательно хорошо (например, грипп), но с точки зрения коммуникации написание кода в популярном стиле может сделать ваш код более привычным для большинства людей.