Даниэль Симмонс
Для всех, кто уже не знаком с этим, Google выпускает гид стиля Для записи JavaScript, который лежит (что Google считает) лучшие стилистические практики для написания чистого, понятного кода.
Это не жесткие и быстрые правила для написания действительных JavaScript, только на прописках для поддержания согласованного и привлекательного выбора стиля в исходных файлах. Это особенно интересно для JavaScript, который является гибким и прощающим языком, который обеспечивает широкий спектр стилистических вариантов.
Google и Airbnb У двух из самых популярных стилей входят там руководства. Я определенно рекомендую вам проверить их обоих, если вы проводите много времени, пишущие JS.
Ниже приведены тринадцать из того, что я считаю самыми интересными и соответствующими правилами от Google Google Guide Tire.
Они имеют дело со всем от горячих оспариваемых вопросов (вкладки по сравнению с пробелами, а также к спорному вопросу о том, как следует использовать запятыми запятыми), к нескольким более неясным спецификациям, которые меня удивили. Они обязательно изменит так, как я пишу мою js, будучи вперед.
Для каждого правила я дам краткое изложение спецификации, за которым следует поддерживающая цитата из руководства по стилю, которое подробно описывает правило. Куда применимо, я также предоставим пример стиля на практике и контрастирую его с кодом, который не следит за правилом.
Используйте пробелы, а не вкладки
Гид позже указывает, что вы должны использовать два пробела (не четыре) для отступа.
// badfunction foo() {∙∙∙∙let name;}// badfunction bar() {∙let name;}// goodfunction baz() {∙∙let name;}Требуются полуконные запяты
Хотя я не могу себе представить, почему кто-то против этой идеи, последовательное использование запятых в JS становится новым «пробелами против дебатов вкладок». Google выходит крепко здесь в защите запятой.
// badlet luke = {}let leia = {}[luke, leia].forEach(jedi => jedi.father = 'vader')// goodlet luke = {};let leia = {};[luke, leia].forEach((jedi) => { jedi.father = 'vader';});Не используйте модули ES6 (пока)
// Don't do this kind of thing yet:
//------ lib.js ------export function square(x) { return x * x;}export function diag(x, y) { return sqrt(square(x) + square(y));}//------ main.js ------import { square, diag } from 'lib';Горизонтальное выравнивание обескуражено (но не запрещено)
Горизонтальное выравнивание – это практика добавления переменного числа дополнительных пространств в вашем коде, чтобы определенные токены отображались непосредственно ниже определенных других токенов на предыдущих строках.
// bad{ tiny: 42, longer: 435, };// good{ tiny: 42, longer: 435,};Не используйте VAR больше
Я все еще вижу людей, использующих var В образцах кода на стековерфле и в другом месте. Я не могу сказать, есть ли там люди, которые сделают это для этого, или если это просто случай, когда старые привычки умирают трудно.
// badvar example = 42;
// goodlet example = 42;
Функции со стрелками являются предпочтительными
Я буду честен, я просто подумал, что функции стрелы были великолепны, потому что они были более лаконичными и приятными, чтобы посмотреть. Оказывается, они также служат довольно важной целью.
// bad[1, 2, 3].map(function (x) { const y = x + 1; return x * y;});// good[1, 2, 3].map((x) => { const y = x + 1; return x * y;});Используйте шаблонные строки вместо конкатенации
// badfunction sayHi(name) { return 'How are you, ' + name + '?';}// badfunction sayHi(name) { return ['How are you, ', name, '?'].join();}// badfunction sayHi(name) { return `How are you, ${ name }?`;}// goodfunction sayHi(name) { return `How are you, ${name}?`;}Не используйте строку продолжения для длинных струн
Интересно, что это правило, что Google и Airbnb не согласны (вот Спец Airbnb ).
Хотя Google рекомендует объединять более длинные строки (как показано ниже) Руководство по стилю Airbnb рекомендует по сути ничего не делать, и позволяет длинные струны продолжаться до тех пор, пока им нужно.
// bad (sorry, this doesn't show up well on mobile)const longString = 'This is a very long string that \ far exceeds the 80 column limit. It unfortunately \ contains long stretches of spaces due to how the \ continued lines are indented.';
// goodconst longString = 'This is a very long string that ' + 'far exceeds the 80 column limit. It does not contain ' + 'long stretches of spaces since the concatenated ' + 'strings are cleaner.';
«Для …» является предпочтительным типом «для петли»
Это странно, если вы спросите меня, но я думал, что я включил его, потому что довольно интересно, что Google объявляет предпочтительный тип для петля.
Я всегда был под впечатлением, что Для ... в петли были лучше для объектов, а для ... из были лучше подходят для массивов. «Правильный инструмент для правильной работы типа».
Хотя спецификация Google здесь не обязательно противоречит этой идее, все еще интересно узнать, что у них есть предпочтение этой петле.
Не используйте Eval ()
MDN Page для Eval () Даже раздел под названием «не используйте Eval!»
// badlet obj = { a: 20, b: 30 };let propName = getPropName(); // returns "a" or "b"eval( 'var result = obj.' + propName );// goodlet obj = { a: 20, b: 30 };let propName = getPropName(); // returns "a" or "b"let result = obj[ propName ]; // obj[ "a" ] is the same as obj.aКонстанты должны быть названы в All_upperCas, разделенным подчеркиванием
Если вы абсолютно уверены, что переменная не должна меняться, вы можете указать это, заплатив название константы. Это делает неизменность постоянной очевидной, поскольку она используется во всем вашем коде.
Известное исключение из этого правила заключается в том, что константа – это определение функции. В этом случае он должен быть написан в камере.
// badconst number = 5;
// goodconst NUMBER = 5;
Одна переменная на декларацию
// badlet a = 1, b = 2, c = 3;
// goodlet a = 1;let b = 2;let c = 3;
Используйте отдельные кавычки, не двойные цитаты
// badlet directive = "No identification of self or mission."
// badlet saying = 'Say it ain\u0027t so.';
// goodlet directive = 'No identification of self or mission.';
// goodlet saying = `Say it ain't so`;
Последнее примечание
Как я уже говорил в начале, это не мандаты. Google является только одним из многих технологических гигантов, и это только рекомендации.
Тем не менее, это интересно посмотреть на рекомендации в стиле, которые выпускаются компанией, такими как Google, которая занимается многими блестящими людьми, которые проводят много времени, пишут отличный код.
Вы можете выполнить следующие правила, если вы хотите следить за рекомендациями для «Google Custiated исходного кода» – но, конечно, множество людей не согласен, и вы можете почистить все или все это.
Я лично думаю, что есть много случаев, когда спецификация Airbnb больше привлекает, чем Google. Независимо от того, что позиция вы принимаете на эти особые правила, все еще важно, чтобы учесть стилистическую консистенцию при записи любого кода.
Оригинал: “https://www.freecodecamp.org/news/google-publishes-a-javascript-style-guide-here-are-some-key-lessons-1810b8ad050b/”