Что с пустыми кодами? - PullRequest
1 голос
/ 02 июля 2010

Я понимаю преимущество модульного тестирования в предпочтении модели представления над выделенным кодом.Тем не менее, я не могу понять навязчивую идею с достижением совершенно пустого кода.Во время компиляции код и XAML объединяются, поэтому на самом деле это одно и то же.Я люблю XAML из-за его декларативного характера, что очень круто.Но есть ли на самом деле какая-либо практическая причина настаивать на том, чтобы весь код, относящийся к представлению, был XAML, а не C #?

Ответы [ 4 ]

4 голосов
/ 02 июля 2010

Есть также некоторые преимущества в использовании того, что Blend может делать во время разработки с XAML, но на самом деле это больше XAML против (тот же код) в аргументе code-behind.Для аргумента без выделенного кода, поскольку он относится к MVVM, реальная цель, как вы указали, состоит в том, чтобы переместить код в классы, такие как ViewModels, которые можно тестировать и использовать повторно.Как и во многих вещах, это часто доводится до крайности, и люди в конечном итоге настаивают на том, что никогда не будет никакого кода позади, когда действительно нужно не иметь бизнес-логику в коде позади, несмотря на то, чтотакже часто логика пользовательского интерфейса тоже.

XAML очень богат и позволяет вам делать многое декларативно, но все же есть определенные вещи для пользовательского интерфейса (например, обработчики событий, некоторая обработка анимации), которые могутне может быть сделано без использования некоторого кода.Обычно вам удается переместить этот код в другое место, кроме выделенного кода, используя такие вещи, как настраиваемые элементы управления, присоединенные свойства и т. Д., Но если вы не получаете никаких преимуществ от повторного использования, вероятно, просто лучше использоватьвыделение кода для выполнения этой логики пользовательского интерфейса.

Шаблоны, такие как MVVM, являются общими руководящими принципами, а не набором строгих правил, которых нужно одержимо придерживаться - они называются языками программирования.:)

1 голос
/ 02 июля 2010

Все дело в тестируемости.Трудно (почти невозможно) провести модульное тестирование вашего кода.С MVVM вы можете создавать тестовые наборы, которые полностью тестируют вашу модель и ViewModel.

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

1 голос
/ 02 июля 2010

По уважительной причине, с помощью WPF и XAML Microsoft стремится разделить графические задания и задачи по кодированию. Таким образом, разработчик и дизайнер пользовательского интерфейса могут работать легко.

0 голосов
/ 02 июля 2010

Модель представления является кодом XAML.По крайней мере, я так думаю об этом.И это файл с выделенным кодом, который можно протестировать без XAML.

С другой стороны, как мог бы сказать Бен Джонсон, никто, кроме дурака, никогда не использовал перетаскивание в модели представления.

...