Является ли .net Maui Communitytoolkit.mvvm icommand плохая практика в ViewModel в .net maui? [закрыто]C#

Место общения программистов C#
Anonymous
 Является ли .net Maui Communitytoolkit.mvvm icommand плохая практика в ViewModel в .net maui? [закрыто]

Сообщение Anonymous »

Я работал над приложением .NET MAUI, используя шаблон MVVM, и я начинаю подвергать сомнению общую практику размещения свойств ICOMMAND в ViewModels. Хотя это кажется стандартным подходом во многих учебных пособиях и примерах, я обеспокоен, что он нарушает принципы чистой архитектуры. Смешивание обязанностей < /h3>
ViewModels должно быть посредниками между моделями и представлениями, сосредоточив внимание на преобразовании данных и управлении состоянием. Тем не менее, Icommands в просмотре моделей часто в конечном итоге обрабатывают: < /p>
  • Навигационная логика (

    Код: Выделить всё

    await Shell.Current.GoToAsync("../")
    )
  • Взаимодействие UI (отображение оповещений)
  • Операции по стойкостью данных (прямые вызовы базы данных)
, похоже, нарушает принцип единой ответственности, заставляя ViewModels слишком много. Повышенная связь < /h3>
Когда ViewModels содержат команды, которые выполняют навигацию или специфичные для пользовательского интерфейса операции, они тесно связаны с структурой пользовательского интерфейса, что затрудняет повторное использование или порт на разные платформы. < /P>
3. Трудности тестирования < /h3>
Команды, которые выполняют навигацию, показывают диалоги или взаимодействие с фреймворными службами, требуют обширного смещения в модульных тестах, что добавляет сложности и может сделать тесты хрупкими. < /P>
4. Архитектурная ясность
В чистой архитектуре не следует ли обрабатывать операции данных с помощью услуг/репозиториев, а также навигация посредством специальных навигационных услуг? Почему у ViewModel есть команды, которые напрямую сохраняют данные или перемещаются между страницами? changes
[*]View code-behind subscribes to these events and handles UI-specific concerns
[*]Services handle all data operations
[*]Navigation is managed by a dedicated service that the View interacts with

Am I overthinking this, or is there merit to removing ICommand Свойства от ViewModels в пользу более строгого разделения проблем? Существуют ли существенные недостатки этого альтернативного подхода, который мне не хватает?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... del-in-net

Вернуться в «C#»