52. Avalonia UI Real World (Generic Refactoring)

00:00 Проблема масштаба модели просмотра страниц действий • Класс состоит из 1470 строк кода, более 1000 из которых повторяются. • Повторяются действия: извлечение списка, добавление нового элемента, удаление и сохранение элемента. • Цель — создать универсальный класс для сокращения кода. 00:49 Начало оптимизации • Выбор файла с информацией для начала оптимизации. • Замена списка и создание элементов в универсальном классе. • Логика повторяется в каждом элементе списка. 01:26 Создание нового класса • Добавление нового класса в модель представления. • Переопределение базы viewmodel с использованием стандартной viewmodel. • Перенос элементов для работы со списком. 02:26 Универсализация свойств • Изменение свойств списка и выбранного элемента. • Создание универсального типа viewmodel. • Проблема с идентификатором выбранного элемента. 03:52 Создание интерфейса • Создание общедоступного интерфейса для элементов списка. • Реализация интерфейса в моделях представления. • Доступ к идентификатору через интерфейс. 06:45 Абстрагирование функций • Абстрагирование функции fetch для получения списка информации о файлах. • Передача команды funk в конструкторе для возврата наблюдаемой коллекции. • Обновление логики для работы с общим списком. 08:14 Сохранение состояния • Интеграция состояния сохранения в модели view. • Определение общих свойств и методов для унификации логики. • Копирование установленного состояния сохранения. 10:07 Добавление нового элемента • Создание метода «новый элемент» для добавления нового элемента. • Применение метода в конструкторе. • Уточнение названия метода «создавать элементы». 11:05 Уникальная логика создания нового предмета • Выделение специфической логики создания нового предмета. • Избегание смешивания общей и уникальной логики в универсальном классе. • Оставление уникальной логики для конкретных опросов. 11:50 Отмена и удаление выбранного элемента • Ввод идентификатора выбранного элемента. • Удаление выбранного элемента при отмене. • Повторение процесса добавления, сохранения, удаления и отмены. 12:44 Реализация нового элемента в модели просмотра • Проверка наличия нового элемента в модели просмотра процесса. • Упоминание о возможном общем классе для модели просмотра процесса и действия. • Реализация логического значения для нового элемента. 13:30 Удаление элемента из пользовательского интерфейса • Копирование определения заголовка для реализации удаления элемента. • Переименование метода для удаления элемента. • Проверка наличия элемента перед удалением. 14:22 Ввод идентификатора и удаление элемента • Ввод идентификатора для удаления элемента. • Удаление элемента из пользовательского интерфейса и базы данных. • Сокращение кода для передачи идентификатора. 15:38 Диалог и название элемента • Начало диалога при удалении элемента. • Добавление названия элемента для описания диалога. • Передача модели основного вида и диалоговой службы. 17:57 Обновление выбранного элемента • Обновление выбранного элемента из списка. • Асинхронное сохранение элемента. • Использование службы базы данных для добавления и обновления элементов. 20:50 Компиляция и проверка ошибок • Начало компиляции и проверка ошибок. • Исправление ошибок, связанных с настройкой нового свойства. • Проверка работы функции извлечения списка. 21:36 Завершение • Копирование и исправление ошибок в других местах. • Повторная компиляция для подтверждения правильности работы. 21:50 Исправление ошибок в виде • Ошибки находятся внутри вида, нужно их исправить. • Команда «добавить новый элемент информации о файле» заменена на «добавить элемент». • Список информации о файлах теперь называется «список объектов для выбора информации о файле». 22:49 Работа с внутренним списком • Внутренний список привязан к идентификатору выбранного элемента. • Команда «удалить информацию о файле» заменена на «удалить элемент». • Важно не пропустить элементы при вставке кода. 23:50 Проверка и сохранение изменений • Проверка, не пропущены ли внешние элементы. • Отмена и сохранение изменений. • Компиляция кода и проверка его работы. 24:41 Тестирование интерфейса • Создание и сохранение нового файла. • Подтверждение работы кода выбора. • Получение универсального интерфейса с возможностью выбора. 25:06 Применение подхода к другим функциям • Применение подхода к распечатыванию списка, выбору пользовательских свойств, сохранению модели, чертежа, импорту чертежа и макросу. • Добавление 100 строк кода для реализации методов. 26:43 Масштабная очистка кода • Масштабная очистка кода, откладываемая на некоторое время. • Стандартизация поведения классов по мере работы. • Рефакторинг классов по мере их развития. • Ссылка на GitHub для доступа к завершённому коду.

Иконка канала Ленинский Букварь
239 подписчиков
12+
6 просмотров
6 часов назад
12+
6 просмотров
6 часов назад

00:00 Проблема масштаба модели просмотра страниц действий • Класс состоит из 1470 строк кода, более 1000 из которых повторяются. • Повторяются действия: извлечение списка, добавление нового элемента, удаление и сохранение элемента. • Цель — создать универсальный класс для сокращения кода. 00:49 Начало оптимизации • Выбор файла с информацией для начала оптимизации. • Замена списка и создание элементов в универсальном классе. • Логика повторяется в каждом элементе списка. 01:26 Создание нового класса • Добавление нового класса в модель представления. • Переопределение базы viewmodel с использованием стандартной viewmodel. • Перенос элементов для работы со списком. 02:26 Универсализация свойств • Изменение свойств списка и выбранного элемента. • Создание универсального типа viewmodel. • Проблема с идентификатором выбранного элемента. 03:52 Создание интерфейса • Создание общедоступного интерфейса для элементов списка. • Реализация интерфейса в моделях представления. • Доступ к идентификатору через интерфейс. 06:45 Абстрагирование функций • Абстрагирование функции fetch для получения списка информации о файлах. • Передача команды funk в конструкторе для возврата наблюдаемой коллекции. • Обновление логики для работы с общим списком. 08:14 Сохранение состояния • Интеграция состояния сохранения в модели view. • Определение общих свойств и методов для унификации логики. • Копирование установленного состояния сохранения. 10:07 Добавление нового элемента • Создание метода «новый элемент» для добавления нового элемента. • Применение метода в конструкторе. • Уточнение названия метода «создавать элементы». 11:05 Уникальная логика создания нового предмета • Выделение специфической логики создания нового предмета. • Избегание смешивания общей и уникальной логики в универсальном классе. • Оставление уникальной логики для конкретных опросов. 11:50 Отмена и удаление выбранного элемента • Ввод идентификатора выбранного элемента. • Удаление выбранного элемента при отмене. • Повторение процесса добавления, сохранения, удаления и отмены. 12:44 Реализация нового элемента в модели просмотра • Проверка наличия нового элемента в модели просмотра процесса. • Упоминание о возможном общем классе для модели просмотра процесса и действия. • Реализация логического значения для нового элемента. 13:30 Удаление элемента из пользовательского интерфейса • Копирование определения заголовка для реализации удаления элемента. • Переименование метода для удаления элемента. • Проверка наличия элемента перед удалением. 14:22 Ввод идентификатора и удаление элемента • Ввод идентификатора для удаления элемента. • Удаление элемента из пользовательского интерфейса и базы данных. • Сокращение кода для передачи идентификатора. 15:38 Диалог и название элемента • Начало диалога при удалении элемента. • Добавление названия элемента для описания диалога. • Передача модели основного вида и диалоговой службы. 17:57 Обновление выбранного элемента • Обновление выбранного элемента из списка. • Асинхронное сохранение элемента. • Использование службы базы данных для добавления и обновления элементов. 20:50 Компиляция и проверка ошибок • Начало компиляции и проверка ошибок. • Исправление ошибок, связанных с настройкой нового свойства. • Проверка работы функции извлечения списка. 21:36 Завершение • Копирование и исправление ошибок в других местах. • Повторная компиляция для подтверждения правильности работы. 21:50 Исправление ошибок в виде • Ошибки находятся внутри вида, нужно их исправить. • Команда «добавить новый элемент информации о файле» заменена на «добавить элемент». • Список информации о файлах теперь называется «список объектов для выбора информации о файле». 22:49 Работа с внутренним списком • Внутренний список привязан к идентификатору выбранного элемента. • Команда «удалить информацию о файле» заменена на «удалить элемент». • Важно не пропустить элементы при вставке кода. 23:50 Проверка и сохранение изменений • Проверка, не пропущены ли внешние элементы. • Отмена и сохранение изменений. • Компиляция кода и проверка его работы. 24:41 Тестирование интерфейса • Создание и сохранение нового файла. • Подтверждение работы кода выбора. • Получение универсального интерфейса с возможностью выбора. 25:06 Применение подхода к другим функциям • Применение подхода к распечатыванию списка, выбору пользовательских свойств, сохранению модели, чертежа, импорту чертежа и макросу. • Добавление 100 строк кода для реализации методов. 26:43 Масштабная очистка кода • Масштабная очистка кода, откладываемая на некоторое время. • Стандартизация поведения классов по мере работы. • Рефакторинг классов по мере их развития. • Ссылка на GitHub для доступа к завершённому коду.

, чтобы оставлять комментарии