Size: a a a

2020 January 01

IC

Iλyα Che in pro.net
Oleg Morozov
с MVVM там всё ясно, там гет/сет изначально имеют логику и ты на нее расчитываешь

а голые гетсет по стандарту это несколько иная картина
Ты не знаешь, голые get set или нет, пока в код не полезешь.
источник

OM

Oleg Morozov in pro.net
так я говорю о том, когда мы их сами пишем по-умолчанию
источник

OM

Oleg Morozov in pro.net
мы то знаем
источник

IC

Iλyα Che in pro.net
Oleg Morozov
зачем, делаем брекингчейнджс
И что делаем-то? Убираем поле и делаем метод ValidateAndSet()? И ломаем всех?
источник

IC

Iλyα Che in pro.net
Breaking сhange не означает, что тебе придётся пересобираться гарантированно. Добавление валидации -- это, строго говоря, тоже breaking change.
источник

OM

Oleg Morozov in pro.net
Iλyα Che
И что делаем-то? Убираем поле и делаем метод ValidateAndSet()? И ломаем всех?
да, это прозрачно
чем ловить неизвестно что потом
источник

IB

Ivan Balanar in pro.net
Oleg Morozov
да, это прозрачно
чем ловить неизвестно что потом
а) производительность для нас не настолько существенна, что бы избегать логики в сеттерах и геттерах (понятное дело, подходить к этому с умом)
б) если появились новые эксепшны - значит, модель стала лучше, ее целостность выросла, а не упала.
с) проперти обеспечивают приятный бонус lazy initialization - который можно и убрать в случае надобности, а вот без них получить его будет куда сложнее
источник

E

EgorBo in pro.net
архитектуроёбы
источник

IC

Iλyα Che in pro.net
Oleg Morozov
да, это прозрачно
чем ловить неизвестно что потом
Окей, давай рассмотрим два варианта. Пользователь пользовался интерфейсом правильно, то есть не ловил баг из-за отсутствия валидации. Тогда ему придётся переписать свой код просто для того, чтобы продолжить пользоваться интерфейсом. Никаких профитов он от этого не получил, по факту. Второй пользователь ловил баг по месту использования значения. Тратил время на отладку и т.д. Теперь ему тоже надо переписать код, исправив проблемы у себя. В случае свойств первый человек просто читает ченджлог, радуется и ничего не делает.
источник

OM

Oleg Morozov in pro.net
Ivan Balanar
а) производительность для нас не настолько существенна, что бы избегать логики в сеттерах и геттерах (понятное дело, подходить к этому с умом)
б) если появились новые эксепшны - значит, модель стала лучше, ее целостность выросла, а не упала.
с) проперти обеспечивают приятный бонус lazy initialization - который можно и убрать в случае надобности, а вот без них получить его будет куда сложнее
когда у тебя эксепшены, то тебе хочется их валидно обработать и сделать что-то логичное для пользователя

а тут получается ситуация, что я написал код и, дай Бог тесты, и у меня вместо ожидаемого поведения появилось иное
и ты об этом на этапе компиляции ничего не знаешь
источник

IB

Ivan Balanar in pro.net
Oleg Morozov
когда у тебя эксепшены, то тебе хочется их валидно обработать и сделать что-то логичное для пользователя

а тут получается ситуация, что я написал код и, дай Бог тесты, и у меня вместо ожидаемого поведения появилось иное
и ты об этом на этапе компиляции ничего не знаешь
обновил версию - будь готов. Эксепшны появятся В ЛЮБОМ случае, т.к. старый ValidateAndSet изменился бы точно так же
источник

OM

Oleg Morozov in pro.net
и я бы рассчитывал на эксепшены валидации

а так тебе обещали Set, а теперь там что угодно
источник

OM

Oleg Morozov in pro.net
автор захотел и повалидировать и понотифаить и еще что-нибудь поделать
что уже не синонимично просто Set
источник

IB

Ivan Balanar in pro.net
Oleg Morozov
и я бы рассчитывал на эксепшены валидации

а так тебе обещали Set, а теперь там что угодно
эксепшнов валидации раньше не было, или было вполовину меньше, все равно придется ловить новые. Твоя проблема надумана.
источник

OM

Oleg Morozov in pro.net
странная сигнатура тогда ValidateAndSet, если эксепшенов или резальта нет
а потом появились

если эксепшенов стало больше это уже как раз количественный рост, а не качественный и мой код в принципе готов к исключениям в данном участке
источник

OM

Oleg Morozov in pro.net
насчет того, что геймдев это вообще другое тут не соглашусь
у нас так же есть негорячие участки, где пишется так же привычный код, понятный любому кто хреначил энтерпрайз

и притензия к паблик гетсету не состоит в перфомансе
а в том, что это телодвижения на будущее, только это будущее несет подлянку, если наступит
это актуально на любом дотнете
источник

IC

Iλyα Che in pro.net
Oleg Morozov
автор захотел и повалидировать и понотифаить и еще что-нибудь поделать
что уже не синонимично просто Set
Правильно ли я понимаю идею, что если метод выполняет валидацию, то это всегда должно быть отражено в нназвании? В общем случае set берёт абстрактное значение и мапит его на значение, которое уже имеет смысл в рамках логики класса. Например, Foo.Length = 3. Справа абстрактное целое число 3. Слева уже длина, которая равна 3 единицам. Если мапинг не удаётся, то надо сообщить об этом пользователю как можно раньше, а не на этапе, когда площадь будет вычисляться, например.
источник

IC

Iλyα Che in pro.net
И опять я перепутал лево и право . Исправил :D
источник

АК

Александр Караман in pro.net
Всем привет.
.Core 3.1 Web Api.
Использую HiQPdf.Free.NetCore
При попытке сгенерировать PDF этой библиотекой на debian вылетает ошибка:
"Cannot get the executing assembly directory. Empty directory"
На винде всё отрабатывает.

Подскажите, плиз, может кто знает лечится ли это как-то чтобы заставить ее работать?
источник

E

EgorBo in pro.net
Iλyα Che
Правильно ли я понимаю идею, что если метод выполняет валидацию, то это всегда должно быть отражено в нназвании? В общем случае set берёт абстрактное значение и мапит его на значение, которое уже имеет смысл в рамках логики класса. Например, Foo.Length = 3. Справа абстрактное целое число 3. Слева уже длина, которая равна 3 единицам. Если мапинг не удаётся, то надо сообщить об этом пользователю как можно раньше, а не на этапе, когда площадь будет вычисляться, например.
пойди в впф или винформах поставть отрицательную ширину окошку
источник