Реактивное Импортозамещение: Как Мы Не Побоялись Делать Масштабный Рефакторинг На Уже Работающем Проекте

С началом активного импортозамещения несколько лет назад сложно было поверить, что это может быть красиво, качественно и современно.

Западные системы создавались и развивались на протяжении многих лет, а российское программное обеспечение создавалось с нуля, без такого большого опыта (но, с другой стороны, без наследия).

Меня зовут Андрей Комаров, я фронтенд-разработчик в Консалтинговой группе компаний «КОРУС».

Наша команда уже несколько лет успешно внедряет систему отчетности для одного из крупнейших транспортных холдингов нашей страны на базе российского программного обеспечения LuxMS. В этой статье я расскажу вам об опыте нашего проекта.



Немного предыстории

Наш проект — это система отчетности с ежедневным обновлением данных, созданная на основе импортозамещающей технологии LuхMS BI. Система предназначена для разных групп пользователей, но ориентирована на высшее руководство заказчика.

Географически он охватывает почти всю Россию.

Полностью готовая и работающая экосистема LuхMS BI позволила нам провести полный цикл разработки системы отчетности: от извлечения данных до их отображения в различных формах визуализации.

В отличие от аналогов, российская платформа позволила быстро настроить визуальную часть под требования конкретного заказчика: это достигается за счет фронтенд-разработки в существующих визуальных сущностях BI-платформы – «дешах» (группах визуализаций).

.



Наследие разработки: дублирование, громоздкий импорт, устаревший API.

Конечно, сейчас мы стремимся использовать только передовые технологии – но так было не всегда.

Изначально визуальная часть делалась на jQuery с использованием фреймов в одном пакете, что порождало довольно много проблем.

Дубликаты файлов, отсутствие «чистого» кода, большой размер файла для импорта, устаревший API и так далее.

В целом было ясно, что jQuery не подходит для сложных пользовательских интерфейсов.

Мы начали обсуждать рефакторинг.

Что для нас было важно:

  1. Скорость работы.

    Мы уделили внимание загрузке данных в приложение и времени отклика системы.

  2. Повторное использование компонентов.

    Это сокращает время разработки.

  3. Огромное сообщество.

    Это означает, что есть кто-то, к кому вы можете обратиться, чтобы решить проблему.

  4. Инструменты браузера, позволяющие выявлять ошибки и ошибки.

  5. Легкий старт. Благодаря огромному количеству структурированной информации изучить React легко.

После обсуждений мы выбрали React, чтобы продолжить работу и провести рефакторинг существующих дешёвок.

Он полностью соответствовал всем нашим критериям.



React: быстрее, удобнее, мощнее

Для начала мы определили общие части нашего SPA. Мы записали общие компоненты в отдельную среду верхнего уровня, которую впоследствии повторно использовали.

Мы постарались разбить каждую визуализацию на множество мелких частей.

Например, инкремент, строка, столбец — это отдельные компоненты, имеющие ряд внутренних настроек.

При старом подходе это было невозможно, так как код становился нечитаемым.

Стоит отметить, что в нашем проекте мы используем хуки, а не классовый подход. Использовать функциональные компоненты проще, чем использовать компонент на основе классов.

Нет необходимости создавать экземпляр класса и вызывать render() — просто вызовите нужную функцию.

Хуки также упрощают работу с методами жизненного цикла компонентов.

При их использовании в компонентах на основе классов приходится работать отдельно с методами компонентDidMount(), компонентDidUpdate(), компонентWillUnmount(), а при использовании хуков можно просто использовать useEffect. В свою очередь, это позволило еще больше упростить код и оптимизировать SPA.

Реактивное импортозамещение: как мы не побоялись делать масштабный рефакторинг на уже работающем проекте

Мы также представили Recharts как наиболее подходящую библиотеку для создания классических диаграмм.

Одним из основных преимуществ этой библиотеки является возможность записи собственных компонентов в существующие компоненты высокого порядка.

Это позволило настроить визуализацию, которую предлагает Recharts, именно так, как того требует заказчик.



Полный обзор проекта и рефакторинг того стоили.

В целом использование React позволило нам отойти от концепции фреймов на одной странице.

Скорость работы BI-приложения также увеличилась за счет Virtual DOM, который позволяет странице моментально получать ответы от сервера и отображать обновления.

Повторно используя компоненты, мы смогли значительно сократить время разработки новых форм визуализации.

А нисходящий поток данных значительно упрощал отладку ошибок.

Мы также добавили TypeScript для статической типизации и React-Redux для разделения логики и представления.

Мы не побоялись провести масштабную проверку всего проекта и потратить время на рефакторинг.

Хотя в этой статье речь идет исключительно о фронтенд-части, мы также уделили внимание и бэкенду: переосмыслили недостатки, выявили особенности текущей реализации и отталкивались от потребностей проекта.

Конечно, нам пришлось изучить некоторые инструменты — например Redux-Saga, где у нас не было опыта и знаний.



Реактивное импортозамещение: как мы не побоялись делать масштабный рефакторинг на уже работающем проекте

Благодаря масштабному рефакторингу мы сделали наш SPA отзывчивым и простым, и время определенно стоило затраченных усилий.

На текущем этапе разработки мы имеем гораздо более удобный и современный продукт. Главный совет: не бойтесь рефакторить.

Это болезненный, но определенно стоящий опыт. Теги: #Анализ и проектирование систем #аналитика #Тестирование ИТ-систем #Визуализация данных #наука о данных #анализ данных #импортозамещение #анализ данных #бизнес-аналитика

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.