Skip to content

Вносит исправления согласно код-ревью #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 9, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 25 additions & 14 deletions javascript.html
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ <h2 id="js-syntax">Синтаксис</h2>
<div class="chapter-part-col chapter-part-col--full-width">
<h3>Отступы, пробелы и переносы</h3>

<blockquote>Для правильного форматирования используйте файл .editorconfig в&nbsp;вашем редакторе.</blockquote>
<blockquote>Для правильного форматирования используйте файл <a href="https://github.com/htmlacademy/codeguide/blob/master/.editorconfig" target="_blank">.editorconfig</a> в&nbsp;вашем редакторе.</blockquote>

<p>Для отступов используются два пробела. Знак табуляции не используется.</p>

Expand Down Expand Up @@ -82,39 +82,50 @@ <h3>Отступы, пробелы и переносы</h3>

<p>После запятой всегда должен ставиться пробел, если запятая не в конце строки</p>

<p>Запрещено переносить запятую на новую строку при создании множественных переменных через один var, при объявлении массивов и объектов. Запрещено использовать запятую в конце списков, объектов или наоборов параметров функции</p>
<p>Запрещено переносить запятую на новую строку при объявлении массивов и объектов. Запрещено использовать запятую в конце списков, объектов или перечислений параметров функции</p>

<p>Файл должен заканчиваться пустой строкой</p>

<p>Строка не должна заканчиваться пробелами</p>

<p>В однострочных объектах и при деструктуризации фигурные скобки отбиваются пробелами с двух сторон</p>
<p>В однострочных объектах и при деструктуризации фигурные скобки не отделяются пробелами от содержимого</p>
<pre class="language-js language-incorrect"><code>var foo = { a: 1 };
</code></pre>

<pre class="language-js language-correct"><code>var foo = {a: 1};
</code></pre>

<pre class="language-js language-iccorrect"><code>const { a, b } = someObject;
</code></pre>

<pre class="language-js language-correct"><code>const {a, b} = someObject;
</code></pre>

<p>В коде не используются совместно табы и пробелы</p>

<p>Блоки кода отделяются друг от друга не более чем двумя пустыми строками</p>
<p>Смысловые блоки кода отделяются друг от друга не более чем двумя пустыми строками</p>

<p>В качестве символа переноса строки используется стандартный символ, который используется в системе</p>

<p>При объявлении вычисляемых ключей в объектах с помощью синтаксиса ES2016 в квадратных скобках не используются пробелы</p>

<p>Оператор вызова функции <code>()</code> не отделяется круглыми скобками от названия функции</p>
<p>Оператор вызова функции <code>()</code> не отделяется пробелами от названия функции</p>

<p>В объектах после объявления ключа не ставится пробел. После двоеточия, которое отделяет в объектах ключ от значения может стоять только один пробел, выравнивать несколько значений при объявлении многострочного объекта запрещено</p>

<p>Ключевые слова отделяются пробелами. Правило касается всех блоков, которые не оговорены отдельно в других правилах. В частности ключевые слова должны отделяться пробелами для условных операторов, циклов, операторов множественного выбора, блоков <code>try..catch</code>, объявлений классов и т. д.</p>

<p>В блоках кода первая и последняя строка не должны быть пустыми (код не отбивается от начала блока кода)</p>

<p>После двоеточий и точек с запятым ставятся пробелы. Перед ними — не ставятся</p>
<p>После двоеточий и точек с запятыми ставятся пробелы. Перед ними — не ставятся</p>

<p>Перед скобками начинающими новый блок кода должен ставиться пробел</p>

<p>При объявлении анонимных функций, скобки с параметрами отделаются пробелом от ключевого слова <code>function</code>. Если функция именована, перед названием ставится пробел, после — нет</p>

<p>В комментариях текст отбивается пробелом от начала комментария</p>

<p>При создании генераторов, звездочка идет сразу после ключевого слова <code>function</code> без пробелов</p>
<p>При создании генераторов, звездочка идёт сразу после ключевого слова <code>function</code> без пробелов</p>

<p>В spread-операторе точки не отделяются от названия коллекции</p>

Expand Down Expand Up @@ -222,10 +233,10 @@ <h2>Предотвращение ошибок</h2>
<div class="chapter-part-col chapter-part-col--full-width">
<h3>Условные операторы</h3>
<p>Запрещена «проверка Йоды» — в условных операторах в блоке условия при сравнении переменной или свойства со значением сначала идет переменная или свойство объекта и только потом значения, а не наоброт.
<pre class="language-js language-incorrect"><code>if (1 === myValue) {}
<pre class="language-js language-incorrect"><code>if (1 === myValue) { /*...*/ }
</code></pre>

<pre class="language-js language-correct"><code>if (myValue === 1) {}
<pre class="language-js language-correct"><code>if (myValue === 1) { /*...*/ }
</code></pre></p>

<p>При сравнении двух значений используется оператор строгого сравнения вместо оператора нестрогого сравнения</p>
Expand All @@ -247,7 +258,7 @@ <h3>Условные операторы</h3>
<h3>Функции</h3>
<p>Если в функции используется ветвление, в котором есть возврат значения (<code>return</code>), <code>return</code> должен быть добавлен и в остальных ветках.</p>

<pre class="language-js language-incorrect"><code>var do = function() {
<pre class="language-js language-incorrect"><code>var doThings = function() {
if (cond) {
return 1;
} else {
Expand All @@ -256,7 +267,7 @@ <h3>Функции</h3>
};
</code></pre>

<pre class="language-js language-correct"><code>var do = function() {
<pre class="language-js language-correct"><code>var doThings = function() {
if (cond) {
return 1;
} else {
Expand Down Expand Up @@ -285,7 +296,7 @@ <h3>Операторы</h3>
<article class="chapter-part">
<div class="chapter-part-col chapter-part-col--full-width">
<h3>Объявление переменных и функций</h3>
<p>При объявлении переменных предпочтение отдается ключевым словам <code>let</code> и <code>const</code>. Переменные объявляются через <code>var</code> только при наличии проблем с поддержкой кода</p>
<p>При объявлении переменных предпочтение отдается ключевым словам <code>let</code> и <code>const</code>. Переменные объявляются через <code>var</code> только при наличии проблем с поддержкой ES6</p>

<p>Запрещено переопределять с помощью ключевого слова ранее созданные переменные</p>

Expand Down Expand Up @@ -433,7 +444,7 @@ <h3>Неиспользуемый код</h3>

<p>В коде нет объявленных, но неиспользуемых переменных</p>

<p>В коде нет выражений, значения которых не записываются в переменные, параметры функций, свойства объектов и не передаются как параметры функций
<p>В коде нет выражений, значения которых не записываются в переменные, параметры функций или свойства объектов и не передаются как параметры функций

<pre class="language-js language-incorrect"><code>check === true && doSomething();
</code></pre>
Expand Down Expand Up @@ -503,7 +514,7 @@ <h2>Прочее</h2>
</code></pre>
</p>

<p>В коде не используются лейблы. Лейблы используются с конструкциями <code>break</code> и <code>continue</code> для направленного выхода из икла и могут привести к слишком сложному для понимания коду</p>
<p>В коде не используются лейблы. Лейблы используются с конструкциями <code>break</code> и <code>continue</code> для направленного выхода из цикла и могут привести к слишком сложному для понимания коду</p>

<p>Блоки, использующиеся в коде должны описывать тело функции, условия, оператора <code>switch</code> и прочие конструкции относящиеся к группировке множественных операций. Блоки не должны использваться сами по себе, любой блок должен быть частью другого выражения</p>

Expand Down