Задать вопрос
@MagayOleg

Хочу узнать мнение программистов о моем первом проекте?

Я самоучка, занимаюсь программированием недавно. Это мой первый самостоятельный проект на JavaScript. HTML писал посредством препроцессора PUG, CSS писал на препроцессоре SASS, всё делал при помощи VS Code и таск-менеджер Gulp. Хочу узнать мнение программистов о моем калькуляторе, может что-нибудь посоветуете? И досточно ли этих знаний, чтобы устроиться на работу стажером по Web-программированию?

Ссылка на репозиторий: https://github.com/magayoleg/Calculator.git
  • Вопрос задан
  • 433 просмотра
Подписаться 1 Простой 5 комментариев
Решения вопроса 3
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Если бы мне показали такой проект в качестве портфолио, у меня бы сразу возникло несколько вопросов:
1) Зачем препроцессоры (sass и pug) в проекте если Вы не используете их возможности? Только ради другого синтаксиса?
2) Зачем в репозитории лежит вендорный код, особенно сжатый?
3) Почему в проекте нет линтера (например eslint) и как следствие нет единого стиля кода?
4) в git один единственный коммит? Вы правда все это выдали на одном дыхании?
5) Что делает эта регулярка? И почему именно эти символы вводить нельзя, а например 非常糟糕的符号 вполне можно?
Ответ написан
WblCHA
@WblCHA
Дополню Дмитрия.
1. Плохое знание нативных методов.
inp.value.indexOf('/')!=-1 // includes

inp.value.slice(-1) 
inp.value.substring(0, inp.value.length - 1) // в честь чего тут субстринг, когда везде слайс используешь?

2. Извращения:
inp.value.slice(index - inp.value.length + 1) // для чего тут inp.value.length?

3. Неумение использовать свитч:
case 'multiply':
            inp.value += item.innerText
          break;
          case 'division':
            inp.value += item.innerText
          break;
          case 'sub':
            inp.value += item.innerText
          break;
          case 'sum':
            inp.value += item.innerText
          break;
          case 'dot':
            inp.value += item.innerText
          break; 

// =

          case 'multiply':
          case 'division':
          case 'sub':
          case 'sum':
          case 'dot':
            inp.value += item.innerText
            break;

4. А тут DRY повесился:
if (inp.value.indexOf('*')!=-1) {
              index = inp.value.indexOf('*')
              inp.value = parseFloat(inp.value.slice(0, index)) * parseFloat(inp.value.slice(index - inp.value.length + 1))
            } else if (inp.value.indexOf('/')!=-1) {
               index = inp.value.indexOf('/')
               inp.value = parseFloat(inp.value.slice(0, index))/parseFloat(inp.value.slice(index-inp.value.length+1))
            } else if (inp.value.indexOf('-')!=-1) {
              index = inp.value.indexOf('-')
              inp.value = parseFloat(inp.value.slice(0, index))-parseFloat(inp.value.slice(index-inp.value.length+1))
            } else if (inp.value.indexOf('+')!=-1) {
              index = inp.value.indexOf('+')
              inp.value = parseFloat(inp.value.slice(0, index))+parseFloat(inp.value.slice(index-inp.value.length+1))
            }


Это что вот прям сильнее всего бросается в глаза, реализовано всё очень... Слабо. Такой простой калькулятор уж точно не является демонстрацией своего скила, он в лучшем случае демонстрирует знание основ, с чем у тебя явные проблемы.
Иными словами, это даже не уровень трейни.
Ответ написан
Самое первое что бросается в глаза - не настроен .gitignore, т.к. есть sass и css. Это говорит о большем: нет понимания о какой либо структуре проекта, не различаете прод от дев версии, т.к. не настроен сборщик.

Верстка - ужасно. Такое сегодня выдавать не стоит.

Совет: изучите html/css -> sass/scss -> bem (качественная верстка начинается отсюда) -> js -> gulp
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы