Можно ли претендовать на должность junior-frotnend (trainee) с таким кодом?

Добрый день. Увидел тут вопрос с аля "тестовым" на знание js и решил сделать свою "реализацию". Что можете сказать по поводу моего кода ? Интересует больше структура тк просто что-то создать/удалить итд не сложно, а как это грамотно струкрутировать не понятно. Собственно код:
  • Вопрос задан
  • 1770 просмотров
Решения вопроса 3
@MaxKorz
1. Слишком запутанно. Если вы столько кода пишите для простого списка где можно создавать/удалять сущность, то что будет в более сложных задачах?

2. Та же проблема что и у автора из другого вопроса - смешиваете старый стандарт и новый, а конкретно - то используете arrow function, то пишите целиком "function(e)"

3.
workers.forEach(function(worker, index) {
        if(worker.id === id) {
          workers.splice(index, 1);
        }
      });

не знаете нативных методов, а конкретно - поиск индекса элемента по условию делается в одну строчку, без перебора через forEach.

4. Не кэшируете селекторы. Делать document.querySelector каждый раз - не разумно.
Во первых - это больше кода, чем могло бы быть (почему бы не заменить вызов document.querySelector(`.${selectors.userName}`) на переменную userNameInput?).
Во вторых - это путает - нужно вглядываться в селектор, и видя посреди функции document.querySelector ты думаешь что это какой-то новый элемент.
Ну и в третьих - это банально лишняя работа для браузера.

5. Код должен описывать сам себя. Если вам нужно комментировать каждую строчку (хэндлеры в App), то вы что-то делаете не так (конкретнее - см. 1 пункт)

6. Совсем не ясно что делает isWorkerEmpty. Во первых, эту функцию следовало бы назвать "isWorkerValid". Во вторых, не было повода ее так сильно усложнять - вам нужно проверять только name и work. И даже если вы уверены что ваше решение верно, вы опять же не знаете нативных функций и пишите велосипеды.
const vals = Object.values(worker);
      for(let i of vals) {
        if(!i.length) {
          return false;
        }
      }
      return true;

можно записать как
return Object.values(worker).every(value => value.length);


7.
Можно ли претендовать на должность junior-frotnend (trainee) с таким кодом?
ответ на этот вопрос можно получить только на собеседовании :)
Ответ написан
@dimoff66
Кратко о себе: Я есть
Сразу по первой функции

1. workers объявлена, но нигде не используется,
const workers = [
    {
      name: 'Mike',
      work: 'Google',
      id: 0
    }
  ];


Тогда уж поместить внутрь возвращаемого объекта
return {
    workers: [{
      name: 'Mike',
      work: 'Google',
      id: 0
    }],


2. Вместо
addWorker(worker) {
      worker.id = workers.length;
      workers.push(worker);
    },


кошернее
addWorker(worker) {worker.id = workers.push(worker);}

чтобы нумерация начиналась с единицы а не с нуля. Либо
addWorker(worker) {workers.push([...worker, id: workers.length + 1]);}


3. функцию removeWorker проще и рациональней переписать в виде
removeWorker(worker) {
        const id = Number(worker.dataset.id);
        const index = workers.findIndex(item => item.id === id);
        workers.splice(index, 1);
    },


4. Код функции isWorkerEmpty можно сократить
isWorkerEmpty(worker) {return Object.values(worker).every(v=>v);}


5. Почему функция возвращения workers называется getUsers не очень понятно.
Ответ написан
FlashManiac
@FlashManiac
I am from Krypton!
Как уже выше писали - слишком запутано для такой простой задачи. Код должен быть простым и лаконичным. Помимо выше перечисленного заметил вот этот странный код:
(function () {
		UiCtrl.createForm();
	}());

Не понятно зачем надо оборачивать вызов метода?

Рекомендации:
  • Юзайте редактор с подсказками eslint. Например Intellij Idea + eslint + airbnb style. Это вас научит писать код в одном стиле.
  • Юзайте современный front-end stack -> nodejs + es6-7 + webpack + ...
  • Изучите -> Vue + React + Angular. Напишите несколько демо-проектов.
  • Напишите резюме. Найдите как написать в современном стиле.
  • Найдите понравившуюся вакансии в крупной-средней фирме. И изучите все что требуется для данных вакансий. После - отправьте резюме во все.
  • Проходите тех-собеседования регулярно.

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
CS Money Санкт-Петербург
от 120 000 до 150 000 руб.
Digital Sharks Казань
от 60 000 до 65 000 руб.
22 янв. 2019, в 17:36
600 руб./за проект
22 янв. 2019, в 17:30
100 руб./за 1000 зн.
22 янв. 2019, в 17:26
100000 руб./за проект