Skip to content

Commit 2407cc0

Browse files
committed
Добавляет последние тексты для правил
1 parent 7a39053 commit 2407cc0

File tree

1 file changed

+106
-13
lines changed

1 file changed

+106
-13
lines changed

app/templates/partials/js/js-rules.hbs

Lines changed: 106 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ var foo = "Copyright \u00A9"; // unicode
201201

202202
## Условные операторы
203203
'yoda': ['error', "never"]
204-
- Запрещена "проверка Йоды" — в условных операторах в блоке условия при сравнении переменной или свойства со значением сначала идет переменная или свойство объекта и только потом значения не наоброт.
204+
- Запрещена "проверка Йоды" — в условных операторах в блоке условия при сравнении переменной или свойства со значением сначала идет переменная или свойство объекта и только потом значения, а не наоброт.
205205

206206
```javascript
207207
if (1 === myValue) {} // Плохо
@@ -338,11 +338,25 @@ function myFunc() {}; // Плохо
338338

339339
## Приведение типов
340340
'no-extra-boolean-cast': 'error',
341-
'valid-typeof': 'error', // проверка на правильный тип в typeof
342-
'radix': 'error',
341+
- Не используется лишнее приведение к Boolean. Например, нет большого смысла переводить в boolean условия в конструкциях `if`, `while`, `for`, в первом операнде тернарного оператора
343342

344-
### Зафиксированный if (if..true)
345-
'no-constant-condition': 'error',
343+
'valid-typeof': 'error',
344+
- Оператор `typeof` используется корректно — используются только правильные значения, возвращаемые оператором, не производится сравнения со строковыми литералами, которые содержат некорректные значения `typeof`
345+
346+
'radix': 'error'
347+
- В `parseInt` обязательно передается второй параметр — основание системы счисления, даже в случае с десятичной системой счисления
348+
349+
### Константы в условиях
350+
'no-constant-condition': 'error'
351+
- В блоки условия операторов if, while, for и тернарного оператора не передается константное значение, которое подразумевает, что условие выполняется (или не выполняется) всегда
352+
```diff
353+
- if (true) {}
354+
+ if (a > 1) {}
355+
```
356+
```diff
357+
- var ternaryValue = true ? 'a' : 'b';
358+
+ var ternaryValue = isA() ? 'a' : 'b';
359+
```
346360

347361
# Модульность и области видимости
348362
## Глобальная область видимости
@@ -351,21 +365,50 @@ function myFunc() {}; // Плохо
351365
# Чистый код
352366
## Лишние символы (пробелы, точки с запятой и прочее)
353367
'no-extra-semi': 'error',
368+
- Не используются лишние (множественные) точки с запятой
354369

355370
## Отладчик и консоль
356371
'no-console': 'error',
372+
- В коде не используется оставленных выводов в консоль
373+
357374
'no-debugger': 'error',
375+
- В коде нет забытых инструкций debugger
358376

359377
## Неиспользуемый код
360378
'no-unreachable': 'error',
361-
'no-unused-vars': ['error', {args: 'none'}], // eslint:recommended
379+
- В проекте нет недоступного кода, который никогда не выполнится
380+
```diff
381+
- if (false) {
382+
- doSomething();
383+
- }
384+
+ if (needToDoSomething()) {
385+
+ doSomething();
386+
+ }
387+
```
388+
389+
'no-unused-vars': ['error', {args: 'none'}]
390+
- В коде нет объявленных, но неиспользуемых переменных. Проверка не относится к параметрам функций.
391+
362392
'no-unused-expressions': 'error',
393+
- В коде нет выражений, значения которых не записываются в переменные, параметры функций, свойства объектов и не передаются как параметры функций
394+
```diff
395+
- check === true && doSomething();
396+
+ if (check) {
397+
+ doSomething();
398+
+ }
399+
```
363400

364401
## Обработка ошибок и исключения
365-
'no-throw-literal': 'error', // eslint:recommended // запрет на выброс исключениями не объектов Error а литералов
402+
'no-throw-literal': 'error',
403+
- Для выбрасывания исключения в оператор `throw` передаются только объекты Error. Передавать литералы запрещено.
404+
```diff
405+
- throw 'Passed value is out of range';
406+
+ throw new RangeError('Rassed value is out of range');
407+
```
366408

367409
### try..catch с пустым try
368410
'no-ex-assign': 'error'
411+
- В конструкции `try..catch` запрещен пустой блок `try`
369412

370413
# Документирование
371414
'valid-jsdoc': ['error', {
@@ -374,21 +417,71 @@ function myFunc() {}; // Плохо
374417
requireReturn: false,
375418
prefer: {returns: 'return'}
376419
}],
420+
При написании jsDoc используются следующие ограничения:
421+
- необязательно добавлять текстовое описание конструкциям @return и @param, достаточно просто указания типа и названия параметра для @param
422+
- описание возвращаемного типа @return требуется только в том случае, если функция возвращает какое-то значение. Правило не действует для конструкторов, для них указывать @return необязательно. Также необязательно указывать тег @return для функций, в которых конструкуия `return` используется без возвращаемого значения для выхода из функции
423+
- для описания возвращаемого значения из функции используется тег @return, а не @returns
377424

378425
# Прочее
379-
'guard-for-in': 'error', // Итерирование по объектам через hasOwnProp
380-
'no-caller': 'error', // запрет на использование caller/callee в функциях
381-
'no-iterator': 'error', // запрет на использование __iterator__
382-
'no-proto': 'error', // запрет на использование __proto__
426+
'guard-for-in': 'error'
427+
- При итерировании по объектам через `for..in` при работе со свойствами используется конструкция `hasOwnProperty`
428+
429+
'no-caller': 'error',
430+
- В функциях не используются обращения к `caller` и `callee`
431+
432+
'no-iterator': 'error',
433+
- В объектах напрямую не переопределяется свойство `__iterator__`
434+
435+
'no-proto': 'error',
436+
- В объектах напрямую не переопределяется свойство `__proto__`. Разрешено переопределять `__proto__` через `Object.create` или запись в прототип, объектов, созданных другими конструкторами, но напрямую редактировать `__proto__` нельзя
437+
```diff
438+
- var obj = {
439+
- __proto__: Parent
440+
- };
441+
+
442+
+ var Obj = function() {};
443+
+ Obj.prototype = new Parent();
444+
+ var obj = new obj;
445+
+
446+
+ var obj = Object.create(Parent.prototype);
447+
```
448+
383449
'no-labels': 'error',
450+
- В коде не используются лейблы. Лейблы используются с конструкциями `break` и `continue` для направленного выхода из цикла и могут привести к слишком сложному для понимания коду
451+
384452
'no-lone-blocks': 'error',
453+
- Блоки, использующиеся в коде должны описывать тело функции, условия, оператора `switch` и прочие конструкции относящиеся к группировке множественных операций. Блоки не должны использваться сами по себе, любой блок должен быть частью другого выражения.
454+
385455
'no-sequences': 'error',
456+
- В коде не используется оператор «запятая» для описания последовательностей действий. Для создания переменных используются отдельные ключевые слова `let`, `const`, `var`, в операторы группировки, условные операторы и прочие конструкции. Исключение составляет начальное условие оператора `for`
457+
```diff
458+
- const result = (1, 2); // 2
459+
+ const result = 2;
460+
461+
- switch (val = getVal(), val) {}
462+
+ val = getVal();
463+
+ switch(val) {}
464+
465+
+ for (var i = 0, l = 100; i < l; i++);
466+
```
386467

387468
## Регулярные выражения
388469
'no-control-regex': 'error',
470+
- В регулярных выражениях не используются «управляющие выражения»
471+
389472
'no-empty-character-class': 'error',
390-
'no-invalid-regexp': 'error', // нельзя создавать объект RegExp из неправильной строки
391-
'no-regex-spaces': 'error', // запрет на использование нескольких пробелов в регулярках. Вместо этого предлагается использовать {3}
473+
- В регулярных выражениях не используются пустые классы символов `[]` (блоки, ограниченные квадратными скобками)
474+
475+
'no-invalid-regexp': 'error',
476+
- В коде регулярные выражения не создаются через конструктор RegExp из строки, которая не может быть разобрана как правильное регулярное выражение
477+
478+
'no-regex-spaces': 'error',
479+
- В регулярных выражениях не используются нескольких последовательных пробелов. Вместо этого предлагается использовать модификаторы количества {3}
480+
```diff
481+
- / /.exec(myString);
482+
+ /\s{3}/.exec(myString);
483+
```
392484

393485
# node.js
394486
'no-process-exit': 'error',
487+
- В node.js файлах не используется конструкция `process.exit`.

0 commit comments

Comments
 (0)