Требования к проекту №4

  • Задача:

    1. Все обязательные пункты технического задания выполнены.
    2. При открытии диалогов, загрузки данных и работе с сайтом не возникает ошибок, программа не ломается и не зависает.
  • Именование:

    1. Название переменных, параметров, свойств и методов начинается со строчной буквы и записываются в нотации CamelCase.
    2. Для названия значений используются английские существительные.
    3. Массивы названы существительными во множественном числе.
    4. Название функции или метода содержит глагол.
    5. Названия констант (постоянных значений) написаны прописными (заглавными) буквами.
    6. Название конструкторов и перечислений начинается с заглавной буквы. В названии используются английские существительные. Значения перечислений объявлены как константы.
    7. Название методов и свойств объектов не содержит название объектов.
    8. Из названия обработчика события и функции-коллбэка следует, что это обработчик.
  • Форматирование и внешний вид:

    1. Используются обязательные блоки кода.
    2. Список констант идёт перед основным кодом.
    3. Код соответствует гайдлайнам (ESLint).
  • Мусор:

    1. В коде проекта нет файлов, модулей и частей кода, которые не используются, включая, закомментированные участки кода.
    2. В коде нет заранее недостижимых участков кода.
  • Корректность:

    1. Константы нигде в коде не переопределяются.
    2. Включён строгий режим (ESLint).
    3. Используются строгие сравнения вместо нестрогих (ESLint).
    4. В коде не используются зарезервированные слова в качестве имён переменных и свойств.
    5. Нельзя пользоваться глобальной переменной event.
  • Модульность:

    1. Все файлы JS представляют собой отдельные модули в IIFE.
    2. Все значения, используемые только внутри модулей ограничены по видимости.
    3. В случае, если одинаковый код повторяется в нескольких модулях, повторяющаяся часть вынесена в отдельный модуль.
    4. При экспорте из одного модуля нескольких значений используется пространство имён.
  • Универсальность:

    1. Код является кроссбраузерным и не вызывает ошибок в разных браузерах и разных операционных системах.
  • Оптимальность:

    1. Множественные DOM-операции производятся на элементах, которые не добавлены в DOM.
    2. Константы, используемые внутри функций создаются вне функций и используются повторно через замыкания.
    3. Поиск элементов по селекторам делается минимальное количество раз, после этого ссылки на элементы сохраняются.
    4. Массивы и объекты, содержимое которых вычисляется, собираются один раз, а после этого только переиспользуются.
    5. Изменения применяются точечно.
  • Безопасность:

    1. Обработчики события добавляются и удаляются своевременно.
    2. Для вставки пользовательских строк (имён, фамилий и т.д.) использован textContent.
  • Единообразие:

    1. Все функции объявлены единообразно.
    2. Используется единый стиль именования переменных.
    3. При использовании встроенного API, который поддерживает несколько вариантов использования, используется один способ.
  • Сложность. Читаемость:

    1. Для каждого события используется отдельный обработчик.
    2. Длинные функции и методы разбиты на несколько небольших.