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

C# - pattern matching - many discards

22611   6 7 8 9 10 11 12 13 14 15 16 все
AlexNek патриот07.03.24 17:52
AlexNek
NEW 07.03.24 17:52 
в ответ alex445 07.03.24 17:17
использую лямбды в инициализаторе объекта

А давайте глянем на это немного "сверху".

У нас есть объект который нифига не умеет, а всё поведение мы задаем ему сами.

Обычно делают так:

https://medium.com/@kevinkuan_26362/back-to-basic-designin...

Но нам это нафиг не нужно, сделаем все сами, чтобы можно было закинуть всё что угодно, в любой комбинации и без тестов

alex445 коренной житель07.03.24 17:53
NEW 07.03.24 17:53 
в ответ alex445 07.03.24 17:47, Последний раз изменено 07.03.24 17:54 (alex445)

Да вот по телику показывали даже.

Два мужика выгрузили унитаз из авто и понесли, ... без унитаза то никуда, всем нужен.

Но они понесли его сбрасывать с моста на автобан.


AlexNek патриот07.03.24 17:54
AlexNek
NEW 07.03.24 17:54 
в ответ alex445 07.03.24 17:24

То бишь первое всё же лучше?

Action redButtonPressed

а не

ButtonPressed redButtonPressed

alex445 коренной житель07.03.24 17:55
NEW 07.03.24 17:55 
в ответ AlexNek 07.03.24 17:54, Последний раз изменено 07.03.24 17:56 (alex445)

Да, лучше.

AlexNek патриот07.03.24 17:58
AlexNek
NEW 07.03.24 17:58 
в ответ alex445 07.03.24 17:47
Вы сейчас будете отрицать, что используете это?

EF - да почти нет. Code first не нравится в принципе, хотя да, есть варианты когда без него никак.

alex445 коренной житель07.03.24 18:00
NEW 07.03.24 18:00 
в ответ AlexNek 07.03.24 17:58

Причём тут коде фёрст? Делегаты там в принципе используются везде. Отказываться от них это как приделать к своему велосипеду квадратные колёса и сделать морду "я самый умный". ))

AlexNek патриот07.03.24 18:02
AlexNek
07.03.24 18:02 
в ответ alex445 07.03.24 17:55
Да, лучше.

Ну, о вкусах не спорят. Мне и доска и море нафиг не нужны, а кому то позарез необходимо.

Срыв покровов Забанен до 7/7/25 16:05 патриот07.03.24 18:03
NEW 07.03.24 18:03 
в ответ AlexNek 07.03.24 17:58

Да хоть что first, ты под каждый пишешь свою функцию в репозитории, а потом размножаешь ее в каждом из слоев?

AlexNek патриот07.03.24 18:10
AlexNek
NEW 07.03.24 18:10 
в ответ alex445 07.03.24 18:00
Делегаты там в принципе используются везде

Не имею понятия, для себя не пользую, вот нашел какой то примерчик. Покажите плиз...

https://github.com/SeanLeitzinger/Entity-Framework-Core-Ex...

AlexNek патриот07.03.24 18:15
AlexNek
NEW 07.03.24 18:15 
в ответ Срыв покровов 07.03.24 18:03
ты под каждый пишешь свою функцию в репозитории, а потом размножаешь ее в каждом из слоев?

Сорри, никак не доходит о чём речь то смущ

Срыв покровов Забанен до 7/7/25 16:05 патриот07.03.24 18:23
NEW 07.03.24 18:23 
в ответ AlexNek 07.03.24 18:15

в одном месте тебе нужно изменить дату рождения человеку, в другом имя, в третьем адрес.

Как реализовать будешь?

AlexNek патриот07.03.24 19:43
AlexNek
NEW 07.03.24 19:43 
в ответ Срыв покровов 07.03.24 18:23
в одном месте тебе нужно изменить дату рождения человеку, в другом имя, в третьем адрес.

Так реализовывать в принципе не буду, всё должно быть в одном месте, а объект всегда иметь определенное состояние.

где то так - "Aggregates are the basic element of transfer of data storage — you request to load or save whole aggregates." MF

Хотя в зависимости от конкретики возможны варианты.


Вот рекомендации например:

https://learn.microsoft.com/en-us/aspnet/core/data/ef-mvc/...

Никаких извращений


А визуально может быть так как и описано.

AlexNek патриот07.03.24 20:02
AlexNek
NEW 07.03.24 20:02 
в ответ Срыв покровов 07.03.24 18:23

Но если сильно хочется атомарности операций, нужно просто забыть об объекте "Покупатель".


Например, Вводим три "команды"

  • изменить дату рождения
  • изменить имя
  • изменить адрес


Которые могут вызывать скрытую "команду": изменить поле в таблице.


Принцип известный и простой - функция должна делать одну операцию и делать ее хорошо. И ничего другого она делать не должна.


Срыв покровов Забанен до 7/7/25 16:05 патриот07.03.24 21:43
NEW 07.03.24 21:43 
в ответ AlexNek 07.03.24 20:02, Последний раз изменено 07.03.24 21:47 (Срыв покровов)
Которые могут вызывать скрытую "команду": изменить поле в таблице.

и как эта команда может выглядеть?


Принцип известный и простой - функция должна делать одну операцию и делать ее хорошо.
изменить дату рождения

это очень много операций, надо отдельно:

Изменить день

Изменить месяц

Изменить год


AlexNek патриот07.03.24 22:03
AlexNek
NEW 07.03.24 22:03 
в ответ Срыв покровов 07.03.24 21:43
и как эта команда может выглядеть?

Совершенно не интересует на данный момент - это особенности реализации

Ну например так

https://www.w3schools.com/sql/sql_update.asp


UPDATE Customers
SET ContactName = 'Alfred Schmidt'
WHERE CustomerID = 1;


это очень много операций, надо отдельно:

согласно подобным желаниям нужно не так как написано, а так:

Изменить 1й бит в дне,

Изменить 2й бит в дне,

...

и т.п. для месяца и года бебе

А вообще, это задача для объекта "дата"

AlexNek патриот07.03.24 22:06
AlexNek
NEW 07.03.24 22:06 
в ответ AlexNek 07.03.24 22:03

Задолбался уже два раза кликать, как убрать эту галку: "Я хочу предварительно просмотреть мое сообщение и/или приложить файл"?

Убираешь и убираешь, а появляется опять.

Срыв покровов Забанен до 7/7/25 16:05 патриот08.03.24 06:55
NEW 08.03.24 06:55 
в ответ AlexNek 07.03.24 22:03

Ок, ответа от свидетелей банды четырех не будет

Какие уж там делегаты, когда все время уходит на войну с командой о недостаточности комментариев.

MrSanders коренной житель08.03.24 09:19
NEW 08.03.24 09:19 
в ответ Срыв покровов 08.03.24 06:55

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

Я на твой вопрос ответить не могу. Не понимаю проблемы, подозреваю что слишком конкретная, шарпистикая, я с шарпом практически не работал, EF не знаю.

Чисто теоретически - в любом ОО-языке без ссылок на методы в любом месте, где нужна была бы ссылка на метод, можно использовать интерфейс.

Программист коренной житель08.03.24 10:18
NEW 08.03.24 10:18 
в ответ Срыв покровов 07.03.24 14:11
есть энтити класс Person, хочу функцию, которой я мог бы апдейтить любое свойство объекта Person в базе данных, доступ к объектам по айди

Я не когда-то очень давно делал один пример с EF просто ради ознакомления, но что-то мне подсказывает, что все эти делегаты - просто надстройка над EF. Ну типа как Linq - надстройка над коллекциями.


В случае с Linq все это работает по одной простой причине - Linq - это просто коллекция статических функций. Там нет, ни состояния, ни взаимодействия между компонентами.

Подозреваю, что в EF тоже самое - коллекция статических функций.


Делегат как входной параметр у статической функции вполне допустим. Другое дело, что сами по себе статические функции - зачастую головная боль. Но в виде расширения какого-либо интерфейса вполне допустимо.


Как я уже говорил, я не могу придумать пример, когда использование делегатов было бы оправдано. Как исключение можно тут указать только расширения существующих интерфейсов (типа Linq). Оспользование делегатов для уведомления других объектов - no go. Т.к. для этого надо использовать эвенты.

Murr патриот08.03.24 14:18
Murr
NEW 08.03.24 14:18 
в ответ Срыв покровов 07.03.24 21:43

еще

- изменить день недели

- изменить изменить порядковый номер дня в году

- изменить изменить порядковый номер недели в году


Самое смешное что это реальные требования потребителей.

6 7 8 9 10 11 12 13 14 15 16 все