Стили JavaScript кода разных времен

2848

С самой эпохи становления веб-технологий программисты использовали JavaScript с целью практического воплощения своей творческой мысли. Отсутствие строгих требований к оформлению позволяет записывать исходники необычным способом и делать код выразительнее. На определенные стили оформления JS кода некогда даже была мода.

В этой статье мы рассмотрим несколько различных стилей, отражающих определенные моменты в развитии JavaScript, и проанализируем их на наличие плюсов и минусов, что позволит поближе взглянуть на язык в целом и прочувствовать его тонкости.

Сначала — запятая

Также этот стиль назывался «Диким Западом». Эта была задумка небольшой хакерской группы, имена представителей которой уже давно канули в Лету. Случилось это в ту пору, когда серверный JS еще только вступал в массы. Должна была появиться целая экосистема, новая IT-цивилизация. Строгих правил этот стиль оформления не несет, однако его использование может решить одну очень большую проблему, связанную с пропущенными запятыми.

Дело в том, что запятых в JS коде того времени приходилось писать так много, что разработчик мог случайно пропустить одну или несколько из них. И заметить такую ошибку, оформляя свой код в привычном стиле:

			var a = 5,
    b = 6,
    c = 7
    d = 8,
    e = 9;
		

было довольно сложно. И вот тогда появилась идея избежать такой оплошности, помещая запятые в область прямой видимости, а именно вот так:

			var a = 5
    , b = 6
    c = 7
    , d = 8
    , e = 9;
		

Этот стиль еще можно найти во многих исходниках, однако большинство программистов приняло негласное соглашение, что исправление подобной ошибки можно доверить YUI компрессору.

Скажи отступам «нет!»

Считается, что этот стиль появился в ответ на неграмотное оформление кода в вопросах на WebmasterWorld в ветке PHP. Однако у него имеется и идеологическая подоплека. Суть этого no-indent стиля заключается в отсутствии отступов: таким образом, никакая строка не считается важнее любой другой, все фрагменты кода равны между собой. А кроме того, кодер сможет сконцентрировать свое внимание на более важных вещах, чем 80-символьный лимит на строку кода.

			db.get(‘user-1234-password’, function (err, value) { 
if (err) { 
throw err; 
} else { 
md5.secure(value, function (err, safePassword) { 
if (err) { 
throw err; 
} else { 
db.put(‘user-1234-password’, safePass, function (err, value) { 
res.send(‘looks good’); 
}); 
} 
}); 
} 
});
		

Появление этого стиля породило массу обсуждений. В скором времени кто-то заметил, что в таком случае код становится похожим на пистолет, и no-indent стиль скоро покинул мир JS-разработки.

Верстаем код таблицами

С целью привлечь в веб-разработку бизнес-элементы программисты выдумали новый стиль, который оформляет код в более привычном для бизнесменов виде, а именно за счет табуляций приводит код из привычного вида:

			// Assignment operators are aligned for a v8 performance boost 
var counterIndex = 0; 
var result = db.get(‘key’).on(‘data’, console.log); 
var itemList = [‘apples’, ‘bananas’, ‘oranges’]; 
var prefix = ‘BETA-’;
		

в форму таблицы:

разбивая весь код на ячейки. Таким образом появилась возможность быстрее ориентироваться в коде в процессе отладки: вместо пространного «Syntax error: Line 4 column 27» можно получить более четкое «Syntax Error: C6».

Проза

Для JavaScript есть характерное высказывание: «Никогда не оглядывайся». И ровно это выражается прозаическим кодом на JS. В отличие от второго описанного no-indent стиля, где отступы не используются вообще, теперь мы используем отступы по полной: где надо и не надо, так сказать.

			if (shoppingCart == []) {
    for (var i = 0; i < displayItems.length; i++) {
        addToCart(displayItems[i]);
    }
    return false;
} else {
    return true;
}
		

Смотрите: когда мы заканчиваем очередной блок, то мы как бы отменяем сделанное нами ранее действие и смещаемся на уровень назад, стирая отступ. И можно ли это назвать прогрессом? Нет. А теперь взгляните на этот фрагмент, оформленный в стиле прозы:

			if (shoppingCart == []) {
      for (var i = 0; i < displayItems.length; i++) {
            addToCart(displayItems[i]);
                  }
                        return false;
                              } else {
                                    return true;
                                          }
		

Проза презентует ваш труд. Водопад битов, каскадом спускающийся к самому концу исходника, делающий вашу работу незабываемой для заказчика. В JavaScript разработке мы движемся вперед, а не назад, и проза на JS это демонстрирует. У этого, кажется, идеального стиля оформления был всего один недостаток: он почему-то очень не нравился менеджерам, а потому отправился вслед за no-indent’ом.

Кодолуние

Агрессивная маркетинговая стратегия NASA, направленная на популяризацию полетов Апполонов на Луну, имела свое преломление и в программистском деле. Так появился новый стиль оформления JavaScript-кода, в рамках которого вот такой фрагмент кода:

			if (shoppingCart == []) {
      for (var i = 0; i < displayItems.length; i++) {
            addToCart(displayItems[i]);
      }
      return false;
} else {
      return true;
} 
var fibonacci = function fib(n) {
      if (n < 2) {
            return n;
      } else {
            return fib(n-1) + fib(n-2);
      }
};
		

превращался в небольшое скопление маленьких Лун в исходнике:

			if(
      shoppingCart
   == []) { for (var i
  = 0; i < displayItems
 .length;i++){addToCart(
   displayItems[i]); }
   return false;}else{
      return true;}              var
                             fibonacci =
                          function fib(n){
                         if (n < 2) {return 
                         n; } else { return 
                            fib(n—1)+fib(
                               n-2);}
		

Причины появления этого стиля оставались тайной в течение 30 лет, пока однажды в ходе одного из исследований AOL не были выявлены несколько документов, созданных в NASA, описывающих данный метод оформления. Однако мода на лунный кодинг исчезла прошла так же неожиданно и таинственно, как и появилась.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Знали ли вы раньше о каком-нибудь из этих стилей? Или, может быть, придерживаетесь и сейчас какого-нибудь из них? Можем побиться об заклад, ваши проекты все-таки написаны в некотором, наверняка общепринятом, стиле. Однако кто знает, как будет развиваться кодинг на JS дальше: никаких запятых? Писать код зигзагом? Нам остается только гадать, ждать да придумывать свое.

Перевод статьи «JavaScript Styles from Worlds Past»

2848