|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat А все это время на ПХП пишут сайты с поддержкой миллиардов одновременных коннектов и не запариваются о каком-то там риад-онли ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 14:32 |
|
async await в c#
|
|||
---|---|---|---|
#18+
Shocker.Pro Ты это, раз с VB.NET не вышло, переходи на ПХП, смотри сколько там сладкого недавно вышло Я еще несколько лет назад заглянул из любопытсва в книгу по ПХП. Да, в общем-то, язык как язык - там и ОО есть, и абстракции, и DI, и проч. Но, вот загадка загадок - почему же все-таки тогда на нем такой адский код все время пишут? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 14:44 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat Про кеширование там ни слова. Точно так же я могу "увидеть" сущность из DbContext и положить её в кеш, не задумываясь, что там могут быть "ленивые" свойства. всё правильно не надо задумываться.. на сим, думаю пора закончить полемику, тут уже всё ясно ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 15:29 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat Но, вот загадка загадок - почему же все-таки тогда на нем такой адский код все время пишут? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 15:38 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat Вот именно. hVostt это по сути косяк FCL Это не косяк, потому "наследование" контракта (интерфейса), на самом деле, с наследованием не имеет ничего общего. Ну я вроде дал чёткие осмысленные аргументы. Хотелось бы нормальные контраргументы, а не демагогию :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 15:45 |
|
async await в c#
|
|||
---|---|---|---|
#18+
hVostt всё правильно не надо задумываться.. на сим, думаю пора закончить полемику, тут уже всё ясно Ну а что человек увидел ДТО и положил его в кеш не думая. Завтра он точно так же не думая положит в кеш ссылку на Stream. И кто ему тогда "рукожопый виноват"? Класть в кеш что-то мутабельное это будет уже, по сути, рукожопый дизайн. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 15:47 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat Ну а что человек увидел ДТО и положил его в кеш не думая. Завтра он точно так же не думая положит в кеш ссылку на Stream. И кто ему тогда "рукожопый виноват"? Класть в кеш что-то мутабельное это будет уже, по сути, рукожопый дизайн. Рукожопый дизайн это не "класть", а "давать класть". Если у тебя в DTO свойство типа IEnumerable, значит ты _даёшь_ возможность покласть всякую хрень. Поэтому нужно конкретизировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 15:53 |
|
async await в c#
|
|||
---|---|---|---|
#18+
hVostt Хотелось бы нормальные контраргументы, а не демагогию :) При чем тут демагогия. Наследование это заявка объекта "Я есть что-то", а реализация или "типа как наследование" контракта-интерфейса это "Я умею то-то". Read-write коллекция умеет все что умеет read-only коллекция, но при этом ей не является , т.к. может изменяться. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 15:53 |
|
async await в c#
|
|||
---|---|---|---|
#18+
hVostt Поэтому нужно конкретизировать. Зачем это конкретизировать, если задачи DTO (сериализация, передача данных) IEnumerable полностью решает. Кому-то когда-нибудь придет потом в голову этим DTO еще и гвозди заколачивать - это тоже надо заранее предвидеть и под это заранее конкретизировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 15:57 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat При чем тут демагогия. Наследование это заявка объекта "Я есть что-то", а реализация или "типа как наследование" контракта-интерфейса это "Я умею то-то". Read-write коллекция умеет все что умеет read-only коллекция, но при этом ей не является , т.к. может изменяться. Ты путаешь экземпляр и интерфейс. Интерфейс не позволяет менять коллекцию, но он говорит явно -- я коллекция. Соответственно по самому контракту, если ты отдаёшь коллекцию как интерфейс IReadOnly, значит ты её не должен менять. В идеале immutable, но в контексте .NET существующего бекграунда, IReadOnly коллекции -- разумный компромисс. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 15:58 |
|
async await в c#
|
|||
---|---|---|---|
#18+
hVostt но он говорит явно -- я коллекция. Он говорит только то, что он поддерживает определенные операции коллекции (те, которые коллекцию не меняют). hVostt В идеале immutable, но в контексте .NET существующего бекграунда В коре System.Collections.Immutable есть начиная чуть ли не с первой версии. Мало кто про него знает только. Все пишут сайты на ПХП под миллиард одновременных пользователей ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 16:10 |
|
async await в c#
|
|||
---|---|---|---|
#18+
hVostt значит ты её не должен менять. Я её и не смогу менять (потому что мне дали интерфейс только на read операции), но никто мне при этом не обещает что сам её менять не будет, если у него есть доступ к её полной реализации. DateTime мне тоже не дает Now самому менять, но это ведь совсем не означает, что оно само остается неизменным. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 16:13 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat hVostt но он говорит явно -- я коллекция. Он говорит только то, что он поддерживает определенные операции коллекции (те, которые коллекцию не меняют). Я не понимаю с чем ты споришь, если честно. Ситуация с изменением у IEnumerable абсолютно такая же, как IReadOnly коллекций. Только IEnumerable -- это не коллекция, а IReadOnlyCollection -- коллекция. И семантика разная. Если уж на то пошло, ты говорил, что "не против", как можно быть не против того, чего не понимаешь в принципе? Т.е. по-твоему, это лишний интерфейс? Есть IEnumerable? Я если честно запутался. Моё мнение такое, ты бездумно везде пихал IEnumerable в том числе в DTO-шки, и сейчас пытаешь опрадать себя, иных вариантов я не вижу твоей позиции ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 16:46 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat DateTime мне тоже не дает Now самому менять, но это ведь совсем не означает, что оно само остается неизменным. Now это вообще функция, а не поле с данными. Хороший пример, кстати, ибо IEnumerable по сути тоже есть функция (GetEnumerator), а не данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 16:48 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat В коре System.Collections.Immutable есть начиная чуть ли не с первой версии. Мало кто про него знает только. Все пишут сайты на ПХП под миллиард одновременных пользователей С какой ещё первой версии? В каком-то 2012 году они появились. А .NET в 2002-м:) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 16:55 |
|
async await в c#
|
|||
---|---|---|---|
#18+
hVostt ты бездумно везде пихал IEnumerable в том числе в DTO-шки Ужаснешься - еще и других заставлял Но не бездумно, а вполне осмысленно - незачем использовать более конкретную абстракцию (а еще хуже её конкретную реализацию) там, где можно использовать более абстрактную. Если ты так делаешь, то ты создаешь потенциальные анальные ограничения и себе и другим. Потому что там где ты используешь абстракцию более высокого уровня ты всегда сможешь использовать абстракцию более низкого уровня (Liskov Substitution Principle), но не наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 16:57 |
|
async await в c#
|
|||
---|---|---|---|
#18+
hVostt С какой ещё первой версии? fkthat В коре ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 16:59 |
|
async await в c#
|
|||
---|---|---|---|
#18+
hVostt Now это вообще функция, а не поле с данными. Ты, возможно, удивишься, но любое свойство Foo это вообще функция get_Foo() ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 17:02 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat, Дык не в коре они появились, ещё раньше в BCL. Не совсем ясна привязка к коре :) fkthat Ужаснешься - еще и других заставлял Но не бездумно, а вполне осмысленно - незачем использовать более конкретную абстракцию (а еще хуже её конкретную реализацию) там, где можно использовать более абстрактную. Сорян, но аргументы максимально нелепые. Пока что выглядит как бездумно, осмысленностью тут не пахнет. Если хочется супер-абстракции, ты гораздо больше получишь, если будешь использовать object и динамик. fkthat Если ты так делаешь, то ты создаешь потенциальные анальные ограничения и себе и другим. Это какие? Контракт это как раз про ограничения. Если тебе они претят, тебе надо с C# уходить в JS там или VB. Там нет ограничений. fkthat Потому что там где ты используешь абстракцию более высокого уровня ты всегда сможешь использовать абстракцию более низкого уровня (Liskov Substitution Principle), но не наоборот. IReadOnlyCollection наследует IEnumerable, так что не выдумывай. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 17:46 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat hVostt Now это вообще функция, а не поле с данными. Ты, возможно, удивишься, но любое свойство Foo это вообще функция get_Foo() Ну что тут сказать. Уел так уел.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 17:47 |
|
async await в c#
|
|||
---|---|---|---|
#18+
hVostt ты гораздо больше получишь, если будешь использовать object и динамик. hVostt тебе надо с C# уходить в JS там или VB. Там нет ограничений. hVostt IReadOnlyCollection наследует IEnumerable, так что не выдумывай. Но не наоборот. Поэтому IEnumerable более абстрактен (выше уровень абстракции) чем IReadOnlyCollection. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 18:10 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat Но не наоборот. Поэтому IEnumerable более абстрактен (выше уровень абстракции) чем IReadOnlyCollection. Object ещё более абстрактен, чем IEnumerable. fkthat hVostt ты гораздо больше получишь, если будешь использовать object и динамик. Ты либо трусы одень, либо крестик сними. Используй везде Object -- у него максимальная абстракция. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 18:13 |
|
async await в c#
|
|||
---|---|---|---|
#18+
fkthat Код: c# 1.
Этот пример, где IEnumerable выглядит как уместный. AddOne может вернуть ленивое вычисление. Я как бы нигде не утверждал, что IEnumerable плохой. Плохо его применять везде абсолютно. Как пример: DTO, там он не уместен. А ты защищаешь свой IEnumerable, как будто он тебе брат родной ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 18:17 |
|
async await в c#
|
|||
---|---|---|---|
#18+
hVostt у него максимальная абстракция. У него максимальная абстракция, но она не подходит для задач того же ДТО. А IEmumerable подходит. И IReadOnlyCollection подходит, но она менее максимальная, чем IEnumerable. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 19:31 |
|
async await в c#
|
|||
---|---|---|---|
#18+
hVostt Как пример: DTO, там он не уместен. Ну чем он не уместен, если он содержит все нужное для ДТО (т.е. просто пройтись, причем еще всего лишь один раз, по элементам коллекции)? Если оговорено, что это должен быть DTO, который можно, допустим, кешировать, крутить на болте и заколачивать им гвозди, то IEnumerable тут уже действительно не подойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 19:39 |
|
|
start [/forum/topic.php?fid=18&msg=40025304&tid=1354595]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 279ms |
total: | 433ms |
0 / 0 |