Обновить
14
0
Иван@IL_Agent

Программист

Отправить сообщение
Ок, как скажите. Я же продолжаю считать, что надо всегда стремиться писать переиспользуемый код, и что solid — это полезные рекомендации.
Visitor — хороший паттерн, но проблемы начинаются, когда нужно расширять количество обходимых классов в другой сборке, отличной от сборки, в которой определен сам Visitor.

Спасибо, я как раз про это написал в разделе «недостатки», в конце.
Конечно, модель должна зависеть от задачи и от выбранного подхода к её решению.

Спасибо, приятно!
интерфейс это гарантия наличия api, либо выполнения контракта. а абстракция, это абстракция, которая выражается ключевым словом abstract. То есть для меня словосочетание абстрактная ЯФигура, немного дико.

Не очень понял вашу мысль. У нас есть контракт IFigure, который выполняют все фигуры. Абстрактная фигура — другими словами. Что значит «гарантия наличия апи» и зачем тут абстрактный класс — не понятно.

Поэтому мне не совсем понятно как в виде класса содержащего Rectangle.getArea может быть совместима с интерфейсом Rectangle.draw.

Тут тоже не понял, о чем вы.
Впрочем, видение — оно у всех разное. Я лишь описал свои мысли, и не навязывают их. Вы, видимо, по-другому смотрите на эту тему.
Лично мне не очень понятно, зачем создавать разные прямоугольники с разными возможностями, когда можно описать отдельно прямоугольник и отдельно — возможности. Но даже если и так — как вы узнаете, что надо создать именно прямоугольник из geom или shape, если на входе — абстрактная IFigure?
Экстеншны к чему? У нас на входе — IFigure, конкретный тип неизвестен. Можно только написать экстеншн к IFigure, но как внутри него мы определим, какая именно фигура у нас?
И каждый раз, когда понадобится новый функционал, добавлять методы? Это нарушение ocp. А если потом нам фигуры понадобятся в проекте, где не нужны добавленные нами возможности?
Нет конечно. Как вариант, в конструктор визитора передавать единицы измерения. Или на кажый вариант — свой визитор.
Следует рассматривать методы с реализацией не как часть протокола, а как заранее определенную возможность работы с протоколом ( как extension method), которую можно переопредлить для конкретных имплементаций.
Получается, мы делаем интерфейс и сразу extension метод к нему, но который можно переопределять в реализациях… Функционально, но засоряет интерфейс, на мой взгляд. Лучше б какие-нибудь виртуальные extension методы запилили.
На RX можно так попробовать:

           //исходная последовательность событий
            IObservable<MyEvent> source= ...;

            //ограничения
            var count = 5;
            TimeSpan period = TimeSpan.FromSeconds(1);
            
            //"обрезанная" последовательность
            IObservable<MyEvent> cuttedStream = source
                .WithLatestFrom(Observable.Interval(period).StartWith(-1), (src, timer) => new { src, timer })
                .GroupBy(p => p.timer)
                .SelectMany(p => p.Take(count))
                .Select(p => p.src);
6 задач за 15 минут? 2.5 мнуты на задачу? Решить, закодить и запостить? Может я чего-то не понимаю, но как-то не правдоподобно.
Под .net не будет Котлина?
Почему же не wcf, webapi или asp.net core наконец? :)
Да, для участников — сразу, для остальных — через некоторое время.
Столько уже копий сломано да статей понаписано про srp и прямоугольники с квадратами… Какой смысл в этой? Поспорить в комментах?
Скажи это счастливым пользователя Acer Liquid Jade Primo, например )
Жаль, ms не предоставляют support library, как в андроиде, чтобы использовать новые фичи на предыдущих версиях винды.
По-хорошему, код класса не должен зависеть от того, как он будет использоваться.
Реакт отличается тем, что он не завязан на html, а дает абстракцию над ним. Т.е. теоретически можно юзать готовые компоненты и ничего не писать на html. А бэкендом компонент может быть и не html, и не веб вообще ( см. ReactNative)

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Разработчик мобильных приложений, Архитектор программного обеспечения
Старший
Kotlin
Dagger 2
Разработка под Android
RxJava 2
MVVM
Разработка мобильных приложений
Android studio
Coroutines
Flow
Android SDK