Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Refactoring

Denis
September 23, 2020

 Refactoring

Denis

September 23, 2020
Tweet

More Decks by Denis

Other Decks in Programming

Transcript

  1. 3

  2. 4

  3. 6 Вот так вот: Квота на выполнение технических задач Диалог

    за пользователя Диалог за сроки выполнения задач Аргументация невозможности реализации заказанной функциональности без рефакторинга
  4. 8 Что будем делать? Сделаем полезный readme Удалим неиспользуемые файлы

    Поправим ошибки в коде Приведем code style в порядок Правильно настроим webpack-сборку Разберемся с зависимостями Настроим code splitting Начнем следить за ошибками у пользователей Проведем внешний аудит с помощью Google Lighthouse Сделаем CI
  5. 15 README.md Название и описание проекта Контакты ответственных Работа с

    проектом Описание команд Ссылки на стенды Полезные ссылки
  6. 16

  7. 17

  8. 19

  9. 20

  10. 22 SonarLint Бесплатно Плагин на самые популярные IDE (Eclipse, IntelliJ,

    Visual Studio, VS Code) Анализирует код на предмет багов и уязвимостей sonarlint.org
  11. 24

  12. 25 ESLint / Stylelint or Stylint Единый code style Анализирует

    код на предмет багов Помогает использовать лучшие практики Прививает использование синтаксического сахара Настраивается на вкусовщину Легко встраивается в пайплайн
  13. 26 Отсутствие eslint-disable-line Отключение правил взамен настройки Не подключен к

    пайплайну Использование yaml вместо json ESLint / Stylelint or Stylint
  14. 31

  15. 32

  16. 35

  17. 36

  18. 38 Webpack bundle analyzer Посмотреть, что у нас под капотом

    Найти самые тяжелые зависимости Найти зависимости, которые не должны были попасть в сборку
  19. 39

  20. 41 Что делать с дублями Поднять версии всех пакетов Использовать

    аналог Написать функциональность самому Сделать пул реквест Продолжать жить с дублями
  21. 42

  22. 44 WEBSITE PAGE 3 PAGE 2 LOGIN … PAGE 10

    MAIN.JS w/o code splitting MAIN.CSS VENDORS.JS VENDORS.CSS
  23. 45 WEBSITE PAGE 3 PAGE 2 LOGIN … PAGE 10

    LOGIN.JS code splitting by entries LOGIN.CSS VENDORS.JS VENDORS.CSS
  24. 48 WEBSITE PAGE 3 PAGE 2 LOGIN … PAGE 10

    LOGIN.JS code splitting by dynamic import LOGIN.CSS VENDORS~LOGIN.JS VENDORS~LOGIN.CSS MAIN.JS
  25. 49

  26. 50

  27. 52

  28. 54

  29. 55

  30. 56

  31. 58 "scripts": { "lint": "stylint src/ && eslint --ext .js,.jsx

    src/", "prod": "BABEL_ENV=production webpack --env=prod --progress", "build": "npm run lint && npm run prod" }
  32. 59 Что мы получили: Разницу в цифрах между тем, что

    было и что сейчас CI Проект, с которым приятно работать