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