ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAG
1
КритерийШтрафные баллы за несоблюдения требованийБаллыКомментарииИтоговая оценка
2
Выполнение задачи100
3
Обязательный функционал проекта реализован в полном объеме
4
При выполнении кода в консоли не возникает ошибок-10 баллов за несоблюдение пункта в целом
5
Именование
6
Переменные объявлены camelCase’ом:

Правильно: userName
Неправильно: UserName, username
-1 балл за каждую ошибку при объявлении переменной
7
В названиях функций и переменных не используется транслит:

Правильно: name, number
Неправильно: imya, chislo
-1 балл за каждое некорректное название переменной
8
Из названия переменной или функции понятно, для чего она используется:

Правильно: button (для кнопки), userName (для имени пользователя)
Неправильно: a (для кнопки), b (для имени пользователя)
-1 балл за каждое некорректное название переменной
9
Массивы названы существительными во множественном числе:

Правильно: const cities = [”Лондон”, “Берлин”, “Токио”];
Неправильно: const name = [”Аня”, “Юля”, “Даша”];
-1 балл за каждое некорректное название массива
10
Имя функции содержит глагол:

Правильно: getData(), generateForecast(), printNames()
Неправильно: a(), name(), cat()
-1 балл за каждое некорректное название массива
11
Названия констант (постоянных значений) написаны заглавными буквами

Правильно: const URL = “https://codegirl.ru/”
Неправильно: const url = “https://codegirl.ru/”
-1 балл за каждое некорректное название функции
12
Форматирование и внешний вид
13
Неизменяемые значения объявлены через const

Ниже пример использования переменных, которые нужно объявлять через let. Если ничего такого делать не планируешь, то смело используй const.


let value = “Привет”
value = 123;

let i = 0;
i++;

Помни, что объекты / массивы, объявленные через const, не накладывают ограничений на операции с их содержимым.
-3 балла за несоблюдение пункта в целом
14
Список констант идёт перед основным кодом.-3 балла за несоблюдение пункта в целом
15
Используются обязательные блоки кода
Исключения: тернарный оператор и однострочные стрелочные функции
Правильно:
let correct = true;
if (answer != x * y) {
correct = false;
}


Неправильно:
let correct = true;
if (answer != x * y) correct = false;
-1 балл за каждое некорректное название функции
16
Оператор присваивания не используется как часть выражения.

Правильно:
balance -= value;
return balance;

Неправильно:
return balance -= value;;
-1 балл за каждое некорректное название функции
17
Код соответствует стилю оформления Codegirl School-1 балл за каждое несоответствие
18
Единообразие
19
При использовании встроенного API, который поддерживает несколько вариантов использования, используется один способ.

Правильно:
const a = document.querySelector(“#a”);
const b = document.querySelector(“.b”);

Неправильно:
const a = document.getElementById(“a”);
const b = document.querySelector(“.b”);
-1 балл за каждую запись
20
Для вставки пользовательских строк (имён, фамилий, названий и т. д) используется textContent.

Правильно:
button.textContent = “Кнопка”

Неправильно:
button.innerHTML = “Кнопка”
-2 балла за несоблюдение пункта в целом
21
Мусор
22
Нет вывода в консоль закомментированного или неиспользуемого кода-2 балла за несоблюдение пункта в целом
23
Корректность
24
Если из функции должно возвращаться значение, то оно всегда возвращается:

Правильно:
function doRandomStuff(num) {
if (num > 2) {
return num;
}
return 10; // значение будет возвращено в любом случае
}

Неправильно:
function doRandomStuff(num) {
if (num > 2) {
return num;
}
// если не попадем в if, значение возвращено не будет
}:
-3 балла за каждое несоответствие
25
Возвращаемое значение функции не игнорируется:

Правильно:
function addNumbers(a, b) {
return a + b
}

// записали результат в переменную
const result = addNumbers(4,5);

Неправильно:
addNumbers(4,5); // результат потерян
-3 балла за каждое несоответствие
26
Используются строгие сравнения вместо нестрогих:

Правильно: value === 2
Неправильно: value == 2

Если нужно, используй явное приведение типов
-1 балл за каждое несоответствие
27
Включен строгий режим:

В начале js-файлов установлена директива 'use strict';
28
Модули не экспортируют изменяющиеся переменные.

Правильно: export const result;
Неправильно: export let result;
-1 балл за несоблюдение пункта в целом
29
Избыточность
30
Повторяющийся код вынесен в функции-5 баллов за несоблюдение пункта в целом
31
Поиск элементов по селекторам делается минимальное количество раз, после этого ссылки на элементы сохраняются в переменных.
-5 баллов за несоблюдение пункта в целом
32
Оптимальность
33
Множественные DOM-операции производятся на элементах, которые не добавлены в DOM.

Для множественной вставки используется DocumentFragment
-3 балла за несоблюдение пункта в целом
34
Обработчики не добавляются в цикле (используется прием “делегирование”)-3 балла за несоблюдение пункта в цело
35
Разное
36
Реализация дополнительной функциональности согласно ТЗ (1-10 баллов)
37
Дополнительный функционал (вне технического задания) (5 баллов)

Можешь запрограммировать пару-тройку «фишек» на свое усмотрение, это будет оценено дополнительно
5 дополнительных баллов
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100