powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / async await в c#
25 сообщений из 88, страница 3 из 4
async await в c#
    #40025253
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
А все это время на ПХП пишут сайты с поддержкой миллиардов одновременных коннектов и не запариваются о каком-то там риад-онли
как тебя ПХП-то задел. Ты это, раз с VB.NET не вышло, переходи на ПХП, смотри сколько там сладкого недавно вышло
...
Рейтинг: 0 / 0
async await в c#
    #40025265
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ты это, раз с VB.NET не вышло, переходи на ПХП, смотри сколько там сладкого недавно вышло

Я еще несколько лет назад заглянул из любопытсва в книгу по ПХП. Да, в общем-то, язык как язык - там и ОО есть, и абстракции, и DI, и проч. Но, вот загадка загадок - почему же все-таки тогда на нем такой адский код все время пишут?
...
Рейтинг: 0 / 0
async await в c#
    #40025291
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Про кеширование там ни слова. Точно так же я могу "увидеть" сущность из DbContext и положить её в кеш, не задумываясь, что там могут быть "ленивые" свойства.




всё правильно не надо задумываться.. на сим, думаю пора закончить полемику, тут уже всё ясно
...
Рейтинг: 0 / 0
async await в c#
    #40025297
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Но, вот загадка загадок - почему же все-таки тогда на нем такой адский код все время пишут?
потому что он расшифровывается как personal home page, а не какой-нибудь энтерпрайс супер-пупер )
...
Рейтинг: 0 / 0
async await в c#
    #40025301
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Вот именно.

hVostt
это по сути косяк FCL

Это не косяк, потому "наследование" контракта (интерфейса), на самом деле, с наследованием не имеет ничего общего.


Ну я вроде дал чёткие осмысленные аргументы.
Хотелось бы нормальные контраргументы, а не демагогию :)
...
Рейтинг: 0 / 0
async await в c#
    #40025304
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
всё правильно не надо задумываться.. на сим, думаю пора закончить полемику, тут уже всё ясно

Ну а что человек увидел ДТО и положил его в кеш не думая. Завтра он точно так же не думая положит в кеш ссылку на Stream. И кто ему тогда "рукожопый виноват"? Класть в кеш что-то мутабельное это будет уже, по сути, рукожопый дизайн.
...
Рейтинг: 0 / 0
async await в c#
    #40025307
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Ну а что человек увидел ДТО и положил его в кеш не думая. Завтра он точно так же не думая положит в кеш ссылку на Stream. И кто ему тогда "рукожопый виноват"? Класть в кеш что-то мутабельное это будет уже, по сути, рукожопый дизайн.


Рукожопый дизайн это не "класть", а "давать класть".

Если у тебя в DTO свойство типа IEnumerable, значит ты _даёшь_ возможность покласть всякую хрень.
Поэтому нужно конкретизировать.
...
Рейтинг: 0 / 0
async await в c#
    #40025308
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Хотелось бы нормальные контраргументы, а не демагогию :)

При чем тут демагогия. Наследование это заявка объекта "Я есть что-то", а реализация или "типа как наследование" контракта-интерфейса это "Я умею то-то". Read-write коллекция умеет все что умеет read-only коллекция, но при этом ей не является , т.к. может изменяться.
...
Рейтинг: 0 / 0
async await в c#
    #40025310
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Поэтому нужно конкретизировать.

Зачем это конкретизировать, если задачи DTO (сериализация, передача данных) IEnumerable полностью решает. Кому-то когда-нибудь придет потом в голову этим DTO еще и гвозди заколачивать - это тоже надо заранее предвидеть и под это заранее конкретизировать?
...
Рейтинг: 0 / 0
async await в c#
    #40025312
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
При чем тут демагогия. Наследование это заявка объекта "Я есть что-то", а реализация или "типа как наследование" контракта-интерфейса это "Я умею то-то". Read-write коллекция умеет все что умеет read-only коллекция, но при этом ей не является , т.к. может изменяться.


Ты путаешь экземпляр и интерфейс.
Интерфейс не позволяет менять коллекцию, но он говорит явно -- я коллекция.
Соответственно по самому контракту, если ты отдаёшь коллекцию как интерфейс IReadOnly, значит ты её не должен менять.

В идеале immutable, но в контексте .NET существующего бекграунда, IReadOnly коллекции -- разумный компромисс.
...
Рейтинг: 0 / 0
async await в c#
    #40025315
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
но он говорит явно -- я коллекция.

Он говорит только то, что он поддерживает определенные операции коллекции (те, которые коллекцию не меняют).
hVostt
В идеале immutable, но в контексте .NET существующего бекграунда

В коре System.Collections.Immutable есть начиная чуть ли не с первой версии. Мало кто про него знает только. Все пишут сайты на ПХП под миллиард одновременных пользователей
...
Рейтинг: 0 / 0
async await в c#
    #40025317
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
значит ты её не должен менять.

Я её и не смогу менять (потому что мне дали интерфейс только на read операции), но никто мне при этом не обещает что сам её менять не будет, если у него есть доступ к её полной реализации. DateTime мне тоже не дает Now самому менять, но это ведь совсем не означает, что оно само остается неизменным.
...
Рейтинг: 0 / 0
async await в c#
    #40025337
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
но он говорит явно -- я коллекция.

Он говорит только то, что он поддерживает определенные операции коллекции (те, которые коллекцию не меняют).


Я не понимаю с чем ты споришь, если честно.
Ситуация с изменением у IEnumerable абсолютно такая же, как IReadOnly коллекций.

Только IEnumerable -- это не коллекция,
а IReadOnlyCollection -- коллекция.

И семантика разная.

Если уж на то пошло, ты говорил, что "не против", как можно быть не против того, чего не понимаешь в принципе? Т.е. по-твоему, это лишний интерфейс? Есть IEnumerable?

Я если честно запутался.
Моё мнение такое, ты бездумно везде пихал IEnumerable в том числе в DTO-шки, и сейчас пытаешь опрадать себя, иных вариантов я не вижу твоей позиции
...
Рейтинг: 0 / 0
async await в c#
    #40025338
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
DateTime мне тоже не дает Now самому менять, но это ведь совсем не означает, что оно само остается неизменным.


Now это вообще функция, а не поле с данными.
Хороший пример, кстати, ибо IEnumerable по сути тоже есть функция (GetEnumerator), а не данные.
...
Рейтинг: 0 / 0
async await в c#
    #40025341
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
В коре System.Collections.Immutable есть начиная чуть ли не с первой версии. Мало кто про него знает только. Все пишут сайты на ПХП под миллиард одновременных пользователей


С какой ещё первой версии?
В каком-то 2012 году они появились.
А .NET в 2002-м:)
...
Рейтинг: 0 / 0
async await в c#
    #40025342
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
ты бездумно везде пихал IEnumerable в том числе в DTO-шки

Ужаснешься - еще и других заставлял Но не бездумно, а вполне осмысленно - незачем использовать более конкретную абстракцию (а еще хуже её конкретную реализацию) там, где можно использовать более абстрактную. Если ты так делаешь, то ты создаешь потенциальные анальные ограничения и себе и другим. Потому что там где ты используешь абстракцию более высокого уровня ты всегда сможешь использовать абстракцию более низкого уровня (Liskov Substitution Principle), но не наоборот.
...
Рейтинг: 0 / 0
async await в c#
    #40025345
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
С какой ещё первой версии?

fkthat
В коре
...
Рейтинг: 0 / 0
async await в c#
    #40025346
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Now это вообще функция, а не поле с данными.

Ты, возможно, удивишься, но любое свойство Foo это вообще функция get_Foo()
...
Рейтинг: 0 / 0
async await в c#
    #40025362
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Дык не в коре они появились, ещё раньше в BCL.
Не совсем ясна привязка к коре :)


fkthat
Ужаснешься - еще и других заставлял Но не бездумно, а вполне осмысленно - незачем использовать более конкретную абстракцию (а еще хуже её конкретную реализацию) там, где можно использовать более абстрактную.


Сорян, но аргументы максимально нелепые. Пока что выглядит как бездумно, осмысленностью тут не пахнет. Если хочется супер-абстракции, ты гораздо больше получишь, если будешь использовать object и динамик.

fkthat
Если ты так делаешь, то ты создаешь потенциальные анальные ограничения и себе и другим.


Это какие? Контракт это как раз про ограничения. Если тебе они претят, тебе надо с C# уходить в JS там или VB. Там нет ограничений.

fkthat
Потому что там где ты используешь абстракцию более высокого уровня ты всегда сможешь использовать абстракцию более низкого уровня (Liskov Substitution Principle), но не наоборот.


IReadOnlyCollection наследует IEnumerable, так что не выдумывай.
...
Рейтинг: 0 / 0
async await в c#
    #40025363
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
Now это вообще функция, а не поле с данными.

Ты, возможно, удивишься, но любое свойство Foo это вообще функция get_Foo()


Ну что тут сказать. Уел так уел..
...
Рейтинг: 0 / 0
async await в c#
    #40025372
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
// хороший интерфейс
interface INice
{
    IEnumerable<int> GetNumbers();
    IEnumerable<int> MultiplyByTo(IEnumerable<int> nums);
    IEnumerable<int> AddOne(IEnumerable<int> nums);
}

class Nice: INice
{
    public IEnumerable<int> GetNumbers() => Enumerable.Range(0, 100);
    public IEnumerable<int> MultiplyByTo(IEnumerable<int> nums) => nums.Select(x => 2 * x);
    public IEnumerable<int> AddOne(IEnumerable<int> nums) => nums.Select(x => x + 1);
}

// анально-ограничивающий интерфейс
interface IUgly
{
    IReadOnlyCollection<int> GetNumbers();
    IReadOnlyCollection<int> MultiplyByTo(IReadOnlyCollection<int> nums);
    IReadOnlyCollection<int> AddOne(IReadOnlyCollection<int> nums);
}

//
// Ахтунг. Смотрим, как из-за анальности интерфейса приходится на каждый чих
// плодить коллекции в памяти (без всякой надобности)
// 
class Ugly: IUgly
{
    public IReadOnlyCollection<int> GetNumbers() => Enumerable.Range(0, 100).ToArray();
    public IReadOnlyCollection<int> MultiplyByTo(IReadOnlyCollection<int> nums) => nums.Select(x => 2 * x).ToArray();
    public IReadOnlyCollection<int> AddOne(IReadOnlyCollection<int> nums) => nums.Select(x => x + 1).ToArray();
}
...
Рейтинг: 0 / 0
async await в c#
    #40025373
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Но не наоборот. Поэтому IEnumerable более абстрактен (выше уровень абстракции) чем IReadOnlyCollection.


Object ещё более абстрактен, чем IEnumerable.


fkthat
hVostt
ты гораздо больше получишь, если будешь использовать object и динамик.
чуш и ересь.


Ты либо трусы одень, либо крестик сними.

Используй везде Object -- у него максимальная абстракция.
...
Рейтинг: 0 / 0
async await в c#
    #40025374
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Код: c#
1.
IEnumerable<int> AddOne(IEnumerable<int> nums);



Этот пример, где IEnumerable выглядит как уместный. AddOne может вернуть ленивое вычисление.

Я как бы нигде не утверждал, что IEnumerable плохой. Плохо его применять везде абсолютно.
Как пример: DTO, там он не уместен.

А ты защищаешь свой IEnumerable, как будто он тебе брат родной
...
Рейтинг: 0 / 0
async await в c#
    #40025394
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
у него максимальная абстракция.

У него максимальная абстракция, но она не подходит для задач того же ДТО. А IEmumerable подходит. И IReadOnlyCollection подходит, но она менее максимальная, чем IEnumerable.
...
Рейтинг: 0 / 0
async await в c#
    #40025397
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Как пример: DTO, там он не уместен.

Ну чем он не уместен, если он содержит все нужное для ДТО (т.е. просто пройтись, причем еще всего лишь один раз, по элементам коллекции)? Если оговорено, что это должен быть DTO, который можно, допустим, кешировать, крутить на болте и заколачивать им гвозди, то IEnumerable тут уже действительно не подойдет.
...
Рейтинг: 0 / 0
25 сообщений из 88, страница 3 из 4
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / async await в c#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]