Aleksandr
никто больше не пишет про хелловорлды на сишарпе
Aleksandr
я надеюсь
Vladimir
То есть он считает что гетеры плохо.
по-моему Рихтер тоже так считает, если я правильно помню
Nuxs🏴‍☠️
чувак, о чем ты собрался писать если ты гуглишь как регулярки использовать по хабру?
Да какая разница, всё равно статья утонет, так и оставшись никем не замеченной
Vladimir
ну типа в 99% процентах случаев они ничего не делают, почему сразу к филду не обращаться, а в 1% можно заюзать метод
Aleksandr
Интересно как он это аргументирует
относится к ней как к функции, которая делает вид, что она поле
Nuxs🏴‍☠️
ну вот и задумайся. стоит ли она твоего времени
Когда пытаешься что-то объяснять, сам начинаешь лучше сабж понимать
Николай
Интересно как он это аргументирует
"Причина в том, что свойства выглядя как поля, являясь по сути методами. Это порождает немыслимую путаницу." И потом приводит разные аргументы, типа свойства могут выбрасывать исключения, свойства нельзя передавать в out\ref, свойства могут выполняться долго, при нескольких обращениях к одному и тому же свойству могут возвращаться разные результаты (типа DateTime.Now), свойства могут порождать побочные эффекты
Николай
"Единственная привлекательная черта свойств - упрощённый синтаксис, все остальное - недостатки, в числе которых потеря в производительности и читабельности кода"
Николай
И как вывод - если бы синтаксис обращения к свойству отличался от обращения к полям, то это был бы хороший синтаксический сахар для Get()\Set()
Aleksandr
Кстати, по поводу out/ref в проперти - интересно как reactiveui решает эту проблему
Aleksandr
Через експрешны)
Ayrat
Я вот если честно свойствами как полями пользуюсь
Ayrat
Я не помню когда я логику в гетерах сетерах писал. Последний раз в wpf
Ayrat
Ради INotify...
Aleksandr
В swift тоже есть свойства. На спидах
Николай
Он ещё одним из аргументов приводит, что у свойства могут быть разные доступы к чтению\записи, в отличие от поля. И рекомендует создавать свойства с публичным геттером и сеттером..
Aleksandr
Aleksandr
Самое то для WPF было бы
Stas
Самое то для WPF было бы
так в reactiveui есть такое
Stas
там атрибуты вешать можно + есть Fody
Николай
Вообще издание древнее, 2012 год, ещё по .NET 4.5, поэтому может у Рихтера с того времени отношение к свойствам и поменялось )
Aleksandr
сами свойства не поменялись
Aleksandr
пока c# 9 не вышел
Михаил
А что нового будет в C# 9 на этот счёт?
Aleksandr
init modifier
Aleksandr
https://devblogs.microsoft.com/dotnet/welcome-to-c-9-0/
Михаил
Спасибо.
Николай
сами свойства не поменялись
Поменялись общепринятые практики и кодстайлы
Aleksandr
в разработке на сишарпе вообще страшные вещи происходят
Aleksandr
взять хотя бы автомаппер. вот какого хрена он так популярен
Aleksandr
C# с автомаппером это почти питон, только вербозный
Λ ll И K X
а можно подробнее что не так с автомаппером
Aleksandr
усложняется рефакторинг. Переименование свойства может сломать маппинги, но ты об этом не узнаешь
Aleksandr
никаких гарантий времени компиляции
Aleksandr
ослабление системы типов
Aleksandr
и все это зачастую просто ради того чтобы как-то оправдать наличие в твоем коде дто на 50+ полей
Николай
и все это зачастую просто ради того чтобы как-то оправдать наличие в твоем коде дто на 50+ полей
Или наличие 10 слоёв, в каждом из которых свой класс сущности с одними и теми же пятью полями
Yaroslav
усложняется рефакторинг. Переименование свойства может сломать маппинги, но ты об этом не узнаешь
он используется же во всякий ынтырпрайзных штуках, где дтошки уже стандарт вообще необсуждаемый что бы проверить маппинги, можно создать тест, в котором можно вызвать специальную функцию проверки, и автомаппер проверит маппинги на валидность про дто с 50 полями нафига не знаю, обычно люди не хотят отдавать лишние данные с роута, поэтому приходиться липить дтошки, а мапить их вручную это вообще муторно а использую автомапер ты скорее всего уложишься в 2 строчки
Yaroslav
плюс, если ты переименуешь свойство, то скорее всего тебе придеться трахаца со своей orm в любом случае тот же автомаппер позволяет делать проекцию из IQueryable, что удобно
Roman
взять хотя бы автомаппер. вот какого хрена он так популярен
при всей моей нелюбви к нему, я щас понял одну проблему, которую он решает. Из-за того, что все дто мутабельные, когда ты добавляешь новое поле, у тебя ничего в коде не ломается, если ты забываешь новую пропертю проинициализировать. Автомаппер эти маппинги автоматом обновляет, но по сути ты меняешь одно зло на другое.
Hog
когда есть документация
И книжка Фриддла
Vladislav
И книжка Фриддла
Сегодня в Неваду ездил
Vagif
при всей моей нелюбви к нему, я щас понял одну проблему, которую он решает. Из-за того, что все дто мутабельные, когда ты добавляешь новое поле, у тебя ничего в коде не ломается, если ты забываешь новую пропертю проинициализировать. Автомаппер эти маппинги автоматом обновляет, но по сути ты меняешь одно зло на другое.
Я не принимаю этот аргумент. Пусть лучше все ломается, когда добавили новое поле, летит ко всем чертям. Прошли те времена, когда я радовался тому, что "само все выправилось", если речь идет о схеме данных. DTO и доменные объекты - разные звери, и автомаппер стирает границы этих различий, начинаешь путать, что куда послал.
Hog
Сегодня в Неваду ездил
Какие смешные кактусы!
Vladislav
Vagif
Сегодня в Неваду ездил
Ух ты, ты сейчас там?
Vladislav
Vagif
А 😞
Vladislav
Намывная территория
Hog
Нева, да
Vladislav
Vagif
Если не ломается, то плохо.
Roman
в общем, я не защищаю автомаппер ни в коем случае. Я как раз ушел из сишарпа, чтобы мучительно не выбирать между плохими вариантами
Vagif
Ага
Danil
Huron Lake
Hog
Или ваще жава
Roman
соболезную, правда
Roman
мб в проститутки менеджеры?
Danil
Везучка. А мне только туда :(
Сервис - регистрируем - инжект - повторить
Hog
Я начал тренироваться :) уже два раза попадалась «задачка» про частоту слов :)
Danil
мб в проститутки менеджеры?
У манагера душниловка с BPMN схема и всякими диаграмма Ганта, предельно скучно
Danil
Если выбирать между сишарпом и манагером, я бы пошел на стройку
Roman
У манагера душниловка с BPMN схема и всякими диаграмма Ганта, предельно скучно
то ли дело нулл рефы и ЕФ. Вот где мякотка, вот где веселуха)
Roman
На «прогера»
а в манагеры не хочешь? Или не берут?
Hog
var words = new Regex(@"\b([A-Z-]+)\b", RegexOptions.IgnoreCase) .Matches(str) .Select(m => m.Groups[0].Value.ToLower()) .GroupBy(g => g) .Select(g => KeyValuePair.Create(g.Key, g.Count())) .OrderByDescending(kv => kv.Value) .ToDictionary(kv => kv.Key, kv => kv.Value);
Hog
Вот, трольное решение набросал :)
Danil
Где то радуется один хаскелист, при виде решения инлайн
Aleksandr
KeyValuePair.Create? спрашивается, где я был все эти годы?)))
Hog
а в манагеры не хочешь? Или не берут?
Ну, я был тимлидом когда-то