Крылатый
Крылатый
Крылатый
Анна
Крылатый
Чот так есть захотелось...
gsomix
Поэтому я вот вчера пару детских примеров портировал с Python на F#. :)
Шеймлесс плаг, полайкате.
https://github.com/gsomix/snippets
Ayrat
хотя да, наверное в жавне туплы:
TwoTypeTupleFactory twoTupleFactory = new TwoTupleFactory(TwoTupleFactorySettings.getDefault());
Tuple<Type1,Type2> tuple = twoTupleFactory.CreateTwoTuple(new Type1(), new Type2());
x
gsomix
Pavel
gsomix
О, сейчас начнется.
gsomix
Я, короче, понял. Никакие учебные примеры никому нельзя показывать.
gsomix
Да, у меня там еще небезопасные деконстракты есть.
gsomix
И string typing.
Ayrat
gsomix
Pavel
да и тут скобки лишнии let stack = (sprintf "t%d" env.nameCounter) :: stack
gsomix
gsomix
Читабельность повышают.
gsomix
Но пример с SSA в целом менее понятный, чем без.
gsomix
Потому что fold.
gsomix
Но пацаны не поймут.
Ayrat
Гоните его, насмехайтесь над ним!
Pavel
а уield как в другом примере что не заюзать?
gsomix
Vladislav
gsomix
Наверное, тут лучше fold. Просто его нужно объяснить.
gsomix
А вот пример без SSA вроде народ, не знающий F#, почитал и проглотил. Все ок, все понятно.
Vasily
Даже у меня на работе ща спринг выпиливают нахуй
Ayrat
ну там статьи вида - КАК ПРАВИЛЬНО ИНЖЕКТИТЬ ПРОПЕРТИ В АБСТРАКТНЫЕ КЛАССЫ С ПОМОЩЬЮ АТРИБУТОВ, ЩА РАССКАЖУ
Roman
ну, жава-господа народ специфичный
gsomix
Ayrat @AnutaU @deexpp Спасибо за лайки и замечания.
Vasily
А у меня, прошу, заметить, финтех средней степени стартапности
Анна
Roman
Вот у меня на текущей тоже случай был:
Все измазано автофаком в лучших традициях, и как-то в одном месте решили избавиться от if/else каскадов. Проще говоря, решили внедрить chain of responsibility. Само собой, порядок звеньев критически важен. Добавили IHandlersChain, IHandler, а порядок звеньев в конкретной цепи теперь определяется при регистрации блять в автофаке.
Vasily
Чет смотрю на код платежного сервиса и понимаю, что там написано некоторое дерьмо
Vasily
Обмазанное абстракциями
Ayrat
Vasily
Надо будет упороться и на акке переписать
Pavel
кстати env в аргументях можно еще деканстрактнуть
Pavel
({nameCounter = nameCounter; stack = stack} as env : Env, code: StringBuilder)
Pavel
все env. станут ненужны
Vasily
Vasily
ПОтому что моя зона ответственности
Roman
звучит угрожающе)
Roman
но это круто
Vasily
Потому как там есть задача все равно в отдельную базу все нести
Vasily
Поэтому меня по идее даже структура базы не сдержит
Vladislav
Roman
а акка не слишком сложна для этой задачи?
Vladislav
Очень
Vladislav
Vladislav
Понял
gsomix
gsomix
Roman
Vasily
Vasily
Специфика
Roman
Ну то есть это не уровень обычных сишарперов ни разу
Roman
Либо я обычных сишарперов переоцениваю
Vasily
Ну я тоже периодически вижу склейку урлов руками
Vasily
И прочее всякое
Vasily
Ну не парятся этим ребята
Roman
Но там часто популярна ситуация
— Мы не можем переписать этот кусок говна, потому что у нас нет документации и никто не знает как он работает, потому что уже уволилось 2 поколения
— Если никто не знает, как должно работать, с чего вы уверены, что оно работает правильно?
— Ну кастомеры не жалуются