Лайвкодинг 2022.02.08: рефакторинг фильтров компонента таблицы в объектно-ориентированной парадигме
Автор: Михаил Влазнев
Загружено: 2022-02-08
Просмотров: 12
Практическая часть:
мы рефакторили фильтр в стандартной таблице
до рефакторинга фильтр хранился в виде массива объектов типа type TableParam = string|TableParamElement|TableParamElement[]|TableDate
после рефакторинга фильтр стал храниться в виде массива экземпляров классов из иерархии TableParam, TableParamString, TableParamObject, TableParamArray, TableParamDaterange
родительский класс определяет сигнатуры методов для конверсии фильтров в параметры запроса на бек и их визуального представления
дочерние классы содержат их реализацию
в результате код для работы с каждым конкретным типом данных в фильтре переехал из самой таблицы в классы фильтров
добавлять новые типы фильтров в шапку таблицы теперь легко и приятно
Теоретическая часть:
мы разбиваем код на слои абстракции, отделяя обобщенный алгоритм работы с параметрами фильтра от алгоритма работы с каждым конкретным типом данных в фильтре
используем наследование из ООП для построения иерархии классов фильтров
используем инкапсуляцию из ООП - каждый дочерний класс содержит внутри себя функционал для работы со своим внутренним состоянием
используем полиморфизм из ООП, переопределяя методы родителя в потомках, и вызывая их там, где по сигнатуре ожидается родительский класс
используем Liskov Substitution Principle из SOLID - обобщенный код работает с родительским классом, хотя по факту везде передауются экземпляры конкретного дочернего класса
используем Dependency Inversion из SOLID - сначала пишем клиентский код, чтобы опытным путем определить наиболее удобный для нас контракт класса TableParam, потом пишем реализацию функционала в конкретных классах
Полезные приемы:
использовать type guards, чтобы перейти от общего типа типа(родителя) к конкретному(дочернему классу)
не стесняться выкидывать читаемые исключения в местах, где процесс выполнения программы может пойти не так, чтобы облегчить себе отладку

Доступные форматы для скачивания:
Скачать видео mp4
-
Информация по загрузке: