C# - pattern matching - many discards
Эвенты используют делегаты, но разница между ними огромна.
Если в 2-х словах:
An Event declaration adds a layer of abstraction and protection on the delegate instance. This protection prevents clients of the delegate from resetting the delegate and its invocation list and only allows adding or removing targets from the invocation list.
Надо такой вопрос на собесах задавать, когда хочешь кого-то завалить. Особенно пояснить за "огромна", хотя всё объясняется в "двух словах".
Просто для сеньоров-помидоров SOLID не пустой звук.
Там больше половины - маркетинг для сектантов, чтобы по сцене ходить и втирать, и лишь небольшая оставшаяся часть катит. ))
Проблема этого солида в том, что его можно слишком широко интерпретировать. Это просто мантры с возможностью широкого толкования. Ляпнуть со сцены с примерами из разряда песочниц - это одно. А сделать и применить это всё правильно в реальном коде в конкретных ситуациях - другое. И у каждого перезрелого помидора своё видение этого солида. Посади пачку помидоров в одну теплицу - они же передеруться, и каждый другого выгонит из профессии. ))
Уверен, что если Вы чуть больше подумаете в этом направлении (убрать нахрен эти делегаты), то наверняка найдете более разумное решение.
Делегаты лучше ваших сраных инжекций, т.к. не требуют создания дополнительного объекта для вызова функций. Можно цеплять функции напрямую. Вообще, есть поверье, что инжекции изобрели (или развили до маразма) всякие джависты, у которых на заре Джавы не было нормальных инструментов в языке, типа делегатов. А может и сейчас нет - кто этих отщепенцев знает. ))
В некоторых случаях удобно писать, группируя по смыслу - поля и свойства, например. Т.е. приватную и публичную часть рядом друг с другом.
Думаю , когда вы поймете, для чего именно разделяли и разделяют публичную и приватную части в имплементации и расставите верно приоритеты в своем подходе к разработке кода, вы сможете претендовать на существенную прибавку к своей зарплате (но это не точно, но я так думаю) :)
И для чего же? Для внешнего потребителя класса пофиг, как там внутри всё расставлено - он видит лишь публичную часть. А для разработчика этого класса всё должно быть расставлено так, как ему удобно, а не как кто-то со сцены наплёл.
Если вопрос о повышении моей зарплаты будет решаться по тому, как я расставляю всякую фигню в своих классах, мне лучше уйти из этого места... Хотя, если за простую расстановку всякой фигни можно получить сверху неплохо так денег - почему бы, чёрт возьми, и нет? Ну хочет кто-то платить за фарисейство - пожалуйста. Пока не найду вариант получше.
12 год - да наф нам не нужон этот ваш делегат.
14 год - Джава 8 представляет лямбды и ссылки на методы.
Можно ещё тут почитать срачи.
Короче, городили паттерны богу паттерны из-за отсутствия нормальных инструментов. Инструменты появились, а говнопаттерны остались. Вышедшие в тираж старички попёрлись на сцены вещать о своих старых паттернах, хотя новые инструменты позволяют зачастую выбросить это старое дерьмо на помойку. Не всё, конечно, но некоторое.
Делегаты лучше ваших сраных инжекций, ...
откуда такая агрессия?
Если считаете, что ваше решение самое лучшее, ну так пожалуйста, нам не жалко.
Жалко будет тех кто придёт потом, но это также не наша проблема.
Я думал, что всегда хорошо глянуть на проблему с разных сторон.
для разработчика этого класса всё должно быть расставлено так, как ЕМУ удобно,
Вот пожалуй в этом и есть вся суть данной дискуссии.
А удобно то должно быть команде, как текущей так и следующей. И это самый минимум, что хочется иметь от хорошего кода.
откуда такая агрессия?
Это не агрессия, это "добавить перчику в бульон - для вкуса". Это я только в интернете такой, а в жизни ваще нифига не агрессивный. ))
Если считаете, что ваше решение самое лучшее, ну так пожалуйста, нам не жалко.
Мне этого мало. Я хочу влезть в чужой монастырь, разнести там всё, и заставить всех плясать под свою дудку. Шутка.
Короче, городили паттерны богу паттерны из-за отсутствия нормальных инструментовПонятно. Банда четырёх с автоматами еще не попадалась на пути
Почему не попадалась? Где-то в таком месте встречал.
Это я только в интернете такойРеального персонажа дано знать не всем, поэтому впечатления остаются интернетные.
Ну типа: Ложки-то нашлись, а осадок остался
Так вы не узнаете, что это я к вам пришёл. Мало ли всяких Алексов вокруг шляется. Ну или можете сделать вид, что не узнали.
Где-то в таком месте встречал.
ну так поэтому и высказывается данное мнение, потому как если бы остался автомат перед глазами, подобных высказываний бы не было.
Так вы не узнаете, что это я к вам пришёл.
Узнаем, узнаем. Тут один приходил на интервью, говорил, что лучший разработчик в мире, так как его на гитхабе котируют дюже. Токсичный, наглый, короче всех старперами обзывал и революцию в матрице обещал. Не взяли, увы. Не вы были?:)
Надо такой вопрос на собесах задавать, когда хочешь кого-то завалить.
Если кандидат не знает почему для нотификации следует использовать эвенты, а не делегаты, то гнать в шею надо такого кандидата :)
А если программист повсеместно использует делегаты, то надо гнать в шею такого программиста. Все просто.
Делегаты лучше ваших сраных инжекций, т.к. не требуют создания дополнительного объекта для вызова функций. Можно цеплять функции напрямую.
Еще раз. Зачем у тебя вообще есть разные классы?
Сделай себе контейнер с делегатами и замени 99% кода на этот контейнер.
Вообще, есть поверье, что инжекции изобрели (или развили до маразма) всякие джависты, у которых на заре Джавы не было нормальных инструментов в языке, типа делегатов.
Инжекты нужны для того, чтобы была возможность подменять объекты. Это активно используется как продуктивном коде, так и в тестировании.