gsomix
Отсутствием проверок нас было не напугать.
Vasily
Короче, я в итоге пришел к тому, что в xaml только отображение и простая логика на триггерах. Для проверки был хороший инструмент kaxaml.Ну и snoop сильно помогал при отладке. Сейчас вроде в студию встроили просмотр дерева
Vasily
Xaml не предназначен для описания сложной логики, проблема скорее в том, что wpf туда подталкивает изначально, кажется, что это правильный путь
gsomix
Если бы проблема была только в XAML.
Vasily
Если бы проблема была только в XAML.
А в чем ещё там глобально?
gsomix
А в чем ещё там глобально?
Я же писал, куча бойлерплейта, неявность.
Dr. Friedrich
Xaml не предназначен для описания сложной логики, проблема скорее в том, что wpf туда подталкивает изначально, кажется, что это правильный путь
Ну а что поделать, если я хочу немножко сложности в представлении, и не хочу загромождать вьюмодель 🤷‍♂
gsomix
Отлаживать сложно, тонны сообщений отправляющиеся в разные стороны... Ух!
Dr. Friedrich
Если бы проблема была только в XAML.
Для меня проблема только в XAML, остальное лично мне нравится.
Vasily
Отлаживать сложно, тонны сообщений отправляющиеся в разные стороны... Ух!
А, ты про роутед эвенты. Они особо не нужны при написании кода
Dr. Friedrich
Триггеры,бей модели на мелкие
Менять мои модели в угоду представлению? Ну такое.
Vasily
Менять мои модели в угоду представлению? Ну такое.
Ну я строил модели исходя из логики отображения
Vasily
В модели внутри все равно dto лежал
gsomix
А, ты про роутед эвенты. Они особо не нужны при написании кода
Нет. Я про все великолепие с подписками, сообщениями, INotifyPropertyChanged.
Dr. Friedrich
У меня вот разные варианты отображения для одних и тех же моделей, и не все они на WPF ,)
Vasily
Нет. Я про все великолепие с подписками, сообщениями, INotifyPropertyChanged.
А, ты натолкнулся на старую проблему отписки от сообщений
gsomix
Ты читаешь вообще? :)
gsomix
Я говорил про отладку.
Vasily
У меня вот разные варианты отображения для одних и тех же моделей, и не все они на WPF ,)
Ну для wpf можно завести отдельные модели, в которые завернуть модели :)
gsomix
WeakEventManager ещё!
Есть такой, да.
Vasily
WeakEventManager ещё!
Он прикольный, не надо
Vasily
Но корявенький,да
gsomix
И вообще я тонну написал текста про проблемы.
gsomix
Та же валидация.
Dr. Friedrich
Ну для wpf можно завести отдельные модели, в которые завернуть модели :)
Отвратительно. Слишком много слоёв моделей получается. Заметь, в моделях второго порядка будет всё грустно с биндингами и INPC. Либо их наследовать, что тоже не ок. Не годится.
Vasily
Та же валидация.
Валидация делается вроде минимум двумя способами
Dr. Friedrich
Он прикольный, не надо
Он лучше, чем было раньше. И требуется не так часто, так что ок.
gsomix
Валидация делается вроде минимум двумя способами
Есть способ, где присутствует декларативное описание правил валидация, чтобы не писать тонну бойлерплейта?
Vasily
Пишешь наследника от dynamicobject...
Vasily
IDataError же
gsomix
Уточни формулировку
Я хочу описывать валидацию и оповещение подписчиков в декларативное стиле. Желательно, чтобы это все было в одном месте, поближе.
Dr. Friedrich
IDataError же
Ну тоже можно
Vasily
Я, кстати, понимаю возмущение @gsomix . Скорее всего, когда он трогал wpf, уже был js
Vasily
Вменяемый
Vasily
Разные исходные точки
Vasily
Я сравниваю десктоп с десктопом
Vasily
Мне приводят аргументы из веба
gsomix
Это не делает технологию объективно лучше.
Vasily
Это не делает технологию объективно лучше.
Свои задачи она решает, и решает хорошо. Недостатков у нее много, как, впрочем, у любой другой
gsomix
И нет, кроме впф я ничего не знал тогда.
gsomix
Мои аргументы основаны на личном длительном опыте.
Vasily
Ну, каждому своё, значит. У меня получилось освоить до уровня, когда скорость разработки высокая ,а количество бойлерплейта малое
Vasily
Но граблей я много пособирал, это факт
gsomix
Я-то решил, но все равно сложно.
gsomix
Как буду около компа.
Vasily
Возможно, при определенных преобразованиях кода проблема уйдёт
Vasily
Самая жестокая проблема, которую я решал в свое время - дата грид с динамическими колонками
Vasily
Вот это был секс
gsomix
https://twitter.com/pasiphae_goals/status/1025953472892551168
gsomix
Блин, почему бугурт?
gsomix
Нормальное же решение.
Dr. Friedrich
Блин, почему бугурт?
Просто потому, что это довольно странно.
Dr. Friedrich
А почему ноль?
gsomix
А что должно быть?
Doge
Блин, почему бугурт?
Потому что чаще всего, деление на ноль - это ошибка. И ожидаемое поведение - это ошибка/исключение , а не ноль
Dr. Friedrich
Неортодоксальный какой-то ответ.
gsomix
NaN?
Это double.
Dr. Friedrich
Ну или исключение, если на интах.
gsomix
А если у тебя язык без исключений?
Dr. Friedrich
Тогда паника!
Dr. Friedrich
Слушай, а деление Int.MaxValue на -1 у них тоже возвращает ноль?
Dmitry
А если у тебя язык без исключений?
Тогда деление пусть возвращает пару результат*код ошибки
Doge
Если уж хочется делить на ноль и получить разумный ответ, то и работать надо в кольце с делителями нуля, где оно даст нормальный результат
gsomix
Ну, представь как такой код писать?