Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

C# - pattern matching - many discards

06.03.24 01:18
Re: C# - pattern matching - many discards
 
alex445 коренной житель
в ответ AlexNek 05.03.24 23:12, Последний раз изменено 06.03.24 01:34 (alex445)
Общую концепцию я бы не стал трогать, как и правильную последовательность вызовов.
Но подобную конструкцию вижу в первый раз "Property2 = _ =>"
И каким образом
public Func Property2 { get; set; }

превращается в
public string Property2 { get; set; }

пока не додумался смущ Как и откуда берутся параметры для Property3?

Всё там нормально - никаких

public string Property2 { get; set; }

там нет. Name и Condition это делегаты, возвращающие строки. Просто название неудачное, что непонятно, что это не просто свойства.


Параметры берутся при вызове этих делегатов:

string name = SomePerson.Name(anyAge);
string condition = SomePerson.Condition(id, "alive");


Я вам ещё раз говорю - не привязывайтесь сильно к коду. Я лишь хотел показать, как будет выглядеть то или иное использование. Первый случай - нужен делегат с параметров, а у меня есть вариант метода или лямбды без параметра. Ну я и использую дискард. Второй случай - не совсем верно я по памяти написал. Но тут просто хотел показать вариант, когда метод не однострочный и с более, чем одним параметром - т.е. вроде бы громоздко должно выглядеть, но на самом деле не очень.


По идее, если всё свойство или метод укладываются в один экран, то вы не теряете контекст работы этого свойства - вы видите всё от и до. А вот когда у вас ссылки на методы, разбросанные по классу, то вам надо прыгать на эти ссылки, чтобы глянуть, что там происходит - вы теряете контекст.


Фабрика фабрик у вас тоже за один проход
Подобные конструкции создают извращенцы, которые пока по счастью не попадались.

Да ладно? А по мне, так подавляющая часть всяких инверсий зависимостей - это как раз извращения. Чтобы понять, как работает та или иная хрень, написанная с помощью инверсий, нужно либо попрыгать по классам, либо иметь возможность открыть штук 5-10 окон с кодом в параллельном режиме (не знаю ни одной IDE с такой возможностью), чтобы видеть весь код сразу. Особенно этим страдают всякие инжекции и шаблонные методы. Оно может хорошо работает, но понять эту хрень зачастую очень сложно, особенно когда создатель почти не оставил комментариев. И особенно если эти инженкции не в чистом виде, как в рафинированных примерах, а разбавлены прочим кодом и паттернами.

 

Перейти на