Я изучил возможность использования Reactive UI в производственном коде. Некоторые из функций действительно привлекательны, но я беспокоюсь о зависимости от этой библиотеки. К ним относятся:
- Безусловное название и условные обозначения. Например, защищенные члены, начиная с нижнего регистра, и метод
RaiseAndSetIfChanged
зависят от вашего личного члена, начинающегося с символа подчеркивания. Я понимаю, что Пол Беттс (автор ReactiveUI) имеет фон Ruby, поэтому я предполагаю, что там, где возникает нечетное название. Однако это вызовет для меня настоящую проблему, поскольку стандартное присвоение имен (в соответствии со стилем) применяется во всем моем проекте. Даже если бы это не было соблюдено, я был бы обеспокоен возникающей несогласованностью в названии, что это вызовет. - Отсутствие документации/образцов. Существует некоторая документация и одинокий образец. Тем не менее, документация представляет собой всего лишь несколько (старых) сообщений в блогах, а образец основан на V2 библиотеки (теперь он на V4).
-
Нечетная конструкция, по частям. Например, ведение журнала абстрагируется, чтобы не зависеть от конкретной структуры ведения журнала. Справедливо. Однако, поскольку я использую log4net (а не NLog), мне нужен мой собственный адаптер. Я думаю, что это потребует от меня реализовать
IRxUIFullLogger
, в котором есть метрическая зависимость от методов (более 50). Я бы подумал, что гораздо лучший подход состоит в том, чтобы определить очень простой интерфейс, а затем предоставить методы расширения в ReactiveUI для облегчения всех необходимых перегрузок. Кроме того, существует такой странныйIWantsToRegisterStuff
интерфейс, от которого зависит сборка NLog, от которой я не буду зависеть (потому что это внутренний интерфейс). Я надеюсь, что мне это не понадобится...В любом случае, моя забота здесь об общем дизайне библиотеки. Кто-нибудь был укушен этим?
- Я уже широко использую MVVM Light. Я знаю, что Пол сделал сообщение в блоге, где он объясняет, что вы можете технически использовать и то, и другое, но моя озабоченность связана с ремонтопригодностью. Я подозреваю, что это было бы ужасно запутанным, если бы оба смешались в одной кодовой базе.
Есть ли у кого-нибудь практический опыт использования Reactive UI в производстве? Если да, можете ли вы смягчить или решить любую из моих проблем?