-
Задача:
- Все обязательные пункты технического задания выполнены.
- При открытии диалогов, загрузки данных и работе с сайтом не возникает ошибок, программа не ломается и не зависает.
-
Именование:
- Название переменных, параметров, свойств и методов начинается со строчной буквы и записываются в нотации CamelCase.
- Для названия значений используются английские существительные.
- Массивы названы существительными во множественном числе.
- Название функции или метода содержит глагол.
- Названия констант (постоянных значений) написаны прописными (заглавными) буквами.
- Название конструкторов и перечислений начинается с заглавной буквы. В названии используются английские существительные. Значения перечислений объявлены как константы.
- Название методов и свойств объектов не содержит название объектов.
- Из названия обработчика события и функции-коллбэка следует, что это обработчик.
-
Форматирование и внешний вид:
- Используются обязательные блоки кода.
- Список констант идёт перед основным кодом.
- Код соответствует гайдлайнам (ESLint).
-
Мусор:
- В коде проекта нет файлов, модулей и частей кода, которые не используются, включая, закомментированные участки кода.
- В коде нет заранее недостижимых участков кода.
-
Корректность:
- Константы нигде в коде не переопределяются.
- Включён строгий режим (ESLint).
- Используются строгие сравнения вместо нестрогих (ESLint).
- В коде не используются зарезервированные слова в качестве имён переменных и свойств.
- Нельзя пользоваться глобальной переменной event.
-
Модульность:
- Все файлы JS представляют собой отдельные модули в IIFE.
- Все значения, используемые только внутри модулей ограничены по видимости.
- В случае, если одинаковый код повторяется в нескольких модулях, повторяющаяся часть вынесена в отдельный модуль.
- При экспорте из одного модуля нескольких значений используется пространство имён.
-
Универсальность:
- Код является кроссбраузерным и не вызывает ошибок в разных браузерах и разных операционных системах.
-
Оптимальность:
- Множественные DOM-операции производятся на элементах, которые не добавлены в DOM.
- Константы, используемые внутри функций создаются вне функций и используются повторно через замыкания.
- Поиск элементов по селекторам делается минимальное количество раз, после этого ссылки на элементы сохраняются.
- Массивы и объекты, содержимое которых вычисляется, собираются один раз, а после этого только переиспользуются.
- Изменения применяются точечно.
-
Безопасность:
- Обработчики события добавляются и удаляются своевременно.
- Для вставки пользовательских строк (имён, фамилий и т.д.) использован textContent.
-
Единообразие:
- Все функции объявлены единообразно.
- Используется единый стиль именования переменных.
- При использовании встроенного API, который поддерживает несколько вариантов использования, используется один способ.
-
Сложность. Читаемость:
- Для каждого события используется отдельный обработчик.
- Длинные функции и методы разбиты на несколько небольших.