Code Review Results

\badcode.js

Position: 2:0-3:15

Priority 3
Title Объявление переменных в теле класса
Category Error
Description

Нельзя объявлять переменные в теле класса *Публичные поля объявляются без ключевого слова var/const/let

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 11:16-11:16

Priority 3
Title Попытка доступа к значению через имя класса
Category Error
Description

У класса нет значения username. Нужно использовать this, чтобы обратиться к значению экземпляра. Да и вообще бесполезная функция

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 15:4-15:47

Priority 2
Title Лучше выбрасывать исключение с объектом Error
Category Error Handling
Description

Лучше делать так: throw new Error('msg')

Additional Info https://eslint.org/docs/rules/no-throw-literal
SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 18:9-18:26

Priority 2
Title Имя метода написано через snake_case
Category Code-Style
Description

В JavaScript принято использовать camelCase

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 19:4-19:35

Priority 1
Title XMLHttpRequest использует устаревшее API
Category Maintainability
Description

Лучше использовать Fetch

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 20:4-21:74

Priority 3
Title Передача пользовательских данных через метод GET
Category Reliability
Description

Метод GET используется в основном для полчуения данных, а еще он раскрывает пользовательские данные, так как передает их в заголовке запроса. Таким образом нужно использовать POST для авторизации

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 20:4-20:12|26:4-26:14

Priority 3
Title Запрос не отправляется
Category Error
Description

Чтобы отправить запрос нужно воспользоваться методом xhr.send()

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 24:4-24:24|28:8-28:29|30:8-30:21

Priority 3
Title Неправильное использование переменной + попытка изменить константу ++
Category Architecture
Description

Значение константы нельзя изменить. Такой код выдаст ошибку. И в целом переменная result не имеет никакого смысла. Она всегда возвращает false, так как xhr.onload работает асинхронно. Также манипуляции с result не выглядят логичными. То, что она может иметь два типа данных (response и bool), считается плохой практикой. Лучше иметь некий массив, который будет хранить в себе ошибки. Если массив пустой, то все ОК. В любом случае код неиспользуемый. Лучше использовать Fetch, и получать результат его работы в асинхронной функции, а там уже обрабатывать.

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 27:10-27:30

Priority 3
Title Сравнение числового значения со строкой
Category Error
Description

xhr.status возвращает число. При строгом сравнении условие никогда не будет выполняться.

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 38:0-38:31

Priority 2
Title Неправильная обработка события
Category Complexity
Description

Лучше прикрепить обработчик события submit ко всей форме.

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 38:0-38:36

Priority 1
Title Использование сторонней библиотеки jQuery
Category Maintainability
Description

Само по себе использование jQuery не является чем-то плохим. Но все же лучше использовать возможности современного JavaScript*. Этого же эффекта возможно добиться без jQuery. * При условии, что не нужно заботиться о кроссбраузерности.

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 39:2-40:32

Priority 1
Title Ручное вытаскивание данных из полей
Category Performance
Description

Лучше использовать ссылку на форму и извлекать из нее значения полей. Еще можно исползовать FormData(formElement).

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 39:2-39:5|40:2-40:5

Priority 2
Title Объявление через var
Category Maintainability
Description

Лучше не использовать var, особенно там, где его применение не несет дополнительной пользы. Лучше использовать const, так как нет взаимодействия со внешним scope и нет переопределения.

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 42:2-42:64

Priority 3
Title Нет ключевого слова new + результат всегда false
Category Error
Description

Ключевое слово new необходимо, чтобы создать пустой объект для экземпляра класса. Результат всегда false

SHA 759239b3ca4c4cc68860047ffd9076508d784fba

Position: 44:6-44:17

Priority 3
Title Используется нестрогое равенство
Category Reliability
Description

Любое правдивое значение res приведет ко входу в цикл. Лучше использовать более явное условие.

SHA 759239b3ca4c4cc68860047ffd9076508d784fba