Написать пост

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

Аватар Типичный программист

С самой эпохи становления веб-технологий программисты использовали 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-’;
		

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

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

разбивая весь код на ячейки. Таким образом появилась возможность быстрее ориентироваться в коде в процессе отладки: вместо пространного «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»

Следите за новыми постами
Следите за новыми постами по любимым темам
3К открытий3К показов