Pavel
в паттерны не умел )
Pavel
http://www.forbes.ru/sites/default/files/users/user4018/Acton-Facebook.jpeg
Roman
Бывает не берут по совершенно разным причинам.
Vasily
Roman
о, ну это уже слишком
Roman
* я такого не встречал
Vasily
Roman
не то, чтобы это было необходимо для хорошего проекта, но если начал собирать паттерны, становится трудно остановиться
Vasily
У меня, помню, один гаврик писал файлвотчер
Vasily
Ну типа мониторинг файлов в папочке и хендлить их
Vasily
Он там умудрился три параллельных иерархии засунуть
Vasily
И около 5 уровней абстракции
Roman
ну раз уж пошел разговор за совсем мясную тему, то самое мощное, что я видел, это 7 классов (всякие Dialog Manager, Dialog container, Layout manager и тд) для того, чтобы просто в WPF приложухе показать во весь экран вопрос да/нет, закрыв остальной контент.
Цимес в том, что для этого использовалась техника спизди лэйаут, а потом верни на место, вместо простого Visibility=Hidden, что приводило к перебиндингу контента и тому, что все, что юзер натыкал, слетало обратно в дефолтные значения.
Но тут конечно больше автор виноват, чем ООП
x
А тайп провайдеры в коре уже есть?
gsomix
gsomix
// я смирился, что нужно читать оба чата на предмет вопросов про F#
Roman
@Kleidemos @fillpackart https://github.com/kagetoki/SnakeGame/blob/doc/article/doc/Snake%20Mailbox.md
Klei
x
gsomix
gsomix
Ayrat
Ayrat
Не публикуй без код ревью. Надо ускорять
Крылатый
Если верить одному зарубежному автору, Атья представил не вполне доказательство, и не вполне про Дзета-функцию. Он сделал утверждения относительно другой функции, но с такими свойтвами она не существует.
https://aperiodical.com/2018/09/atiyah-riemann-hypothesis-proof-final-thoughts/
gsomix
gsomix
Просто если исправить изначальную версию, то и статья немного другая получится. :)
Ayrat
свои континуейшены, трамплины для них, своя очередь
Ayrat
О.о
Bonart
gsomix
Сделал ребрендинг аватарки.
Roman
Roman
Roman
Анна
Ayrat
System.Collections.Concurrent вроде
gsomix
Roman
Ну да, там зубодробительно. Иногда люблю почитать такие исходники
Dr. Friedrich
Dr. Friedrich
Ну, вернее, там всё сложно.
Dr. Friedrich
F# просто не требует <summary>
Dr. Friedrich
А Ionide (в обход стандарта, надо заметить?) интерпретирует комментарии как Markdown.
Dr. Friedrich
https://github.com/philippranzhin/testTask
Я посмотрел немножко, и мне кажется, что ты делал слишком абстрактно. Везде штуки, которые принимают и передают функи и экшены из string в bool и обратно. На мой взгляд, это выглядит крайне запутанно. Вот как бы я ожидал увидеть внешний интерфейс такой библиотеки:
1. У нас есть класс IT9Helper, который в конструктор ожидает IIoService.
2. У IIoService уже есть все эти методы ReadString, WriteString, WriteError и т.п.
(хотя для WriteError можно и название получше найти, или вообще бросать исключения, но не суть)
3. Можно также параметризовать наш класс каким-нибудь IT9Validator, который бы валидировал сообщения (то, что ты сейчас сделал просто списком фунок)
Dr. Friedrich
Dr. Friedrich
(код почти из настоящего продакшена; если б я не взялся ревьюить, то он бы, может, и не появился, но, может, и дожил бы до продакшена)
Vasily
Vasily
Откуда там двойное приведение типов
Vasily
И почему не as
Dr. Friedrich
И почему не as
Потому что я против as в тех случаях, когда оно не нужно.
Dr. Friedrich
И я буду стоять насмерть.
Dr. Friedrich
C# по какой-то мутной причине не умеет там (TThis)this
Vasily
Ох млин
Vasily
Это жидбрейнс?
Dr. Friedrich
Ну то есть кастовать this к генерик тайп параметру просто так нельзя, если для this не известно в компил-тайме, что он точно наследуется
Dr. Friedrich
Но там был указан констрейнт от IBusinessLogic<T, TThis>
Dr. Friedrich
Поэтому дабл каст сработал :)
Dr. Friedrich
Это жидбрейнс?
Нет, у JB я не видел настолько мутного кода.
Dr. Friedrich
Пока что, во всяком случае.
Dr. Friedrich
Но мб я его ещё напишу!
Vasily
Вообще, конечно, странноватый код
Vasily
Не совсем ясно, какую задачу решает
Dr. Friedrich
Задачу кастования this к TThis.
Dr. Friedrich
Мы CRTP делали на C#.
Vasily
А внешним методом это не делалось?
Vasily
Типа extension
Dr. Friedrich
И что написать в экстеншене?
Dr. Friedrich
Задачка довольно простая, на самом деле
Dr. Friedrich
Представь, что ты делаешь билдер
Dr. Friedrich
(о да!)
Dr. Friedrich
class BuilderBase {
BuilderBase WithFooOption() => this;
}
Vasily
Так
Vasily
И?
Dr. Friedrich
И хочешь его вызывать так:
var muBuilder = new ChildBuilder()
.WithFooOption()
.WithChildOption();
Vasily
Выглядит как ебанина, если честно
Dr. Friedrich
И пишешь потом такой:
class ChildBuilder : BuilderBase {
ChildBuilder WithChildOption() => this;
}