Size: a a a

Scala User Group

2020 August 10

IA

Ivan Aristov in Scala User Group
Она и отвалится как раз
источник

λ

λoλcat in Scala User Group
Вопрос то не про это
источник

λ

λoλcat in Scala User Group
В трейте деф, в импл классе - вал
источник

VS

Vladimir Sam in Scala User Group
вопросы от джуна за 300

оно же в импл отвалится если сделать
final class FooImpl extends Foo {
val baz = bar.map(urMummySize)

val bar: IO[Int] = ???
}
источник

VS

Vladimir Sam in Scala User Group
но это не звучит как блокер для энтерпрайз кода, уж такой косяк точно гдето вскроется
источник

SA

Sergey Alaev in Scala User Group
Vladimir Sam
но это не звучит как блокер для энтерпрайз кода, уж такой косяк точно гдето вскроется
Конечно, не блокер. Но недостаток. Например, при рефакторингах придется делать топологическую пересортировку зависимостей руками. А стремиться нужно к стилю, который работает гарантированно с минимальным приложением мозга.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Vladimir Sam
Есть аргументы, почему не стоит в имплементации какого-то интерфейса делать
val getSomeUsers: F[List[User]]

вместо
def getSomeUsers: F[List[User]]

?
Или мб я ошибаюсь и именно так и стоит делать (типа метод все равно вызовут, а тут у нас и граф уже собран и инициализирован)
нет аргументов
источник

a

aλeχknvl in Scala User Group
Vladimir Sam
Есть аргументы, почему не стоит в имплементации какого-то интерфейса делать
val getSomeUsers: F[List[User]]

вместо
def getSomeUsers: F[List[User]]

?
Или мб я ошибаюсь и именно так и стоит делать (типа метод все равно вызовут, а тут у нас и граф уже собран и инициализирован)
https://scalafiddle.io/sf/JvarPzb/0 про порядок сказали, вот иллюстрация
источник

a

aλeχknvl in Scala User Group
но мне кажется сложные зависимости в таком коде не так часто встречаются
источник

a

aλeχknvl in Scala User Group
поэтому я лично пишу val и почти ни разу таких проблем не было
источник

a

aλeχknvl in Scala User Group
или lazy val, если я заранее знаю, что это будет проблемой
источник

λ

λoλcat in Scala User Group
источник

a

aλeχknvl in Scala User Group
хотя вот у моих сотрудников такого рода проблемы возникали. у нас есть тайпкласс с кучей инстансов, топологически не отсортированных
источник

a

aλeχknvl in Scala User Group
и пару раз (два разных человека) добавили туда implicit val в неправильном месте и пришли спрашивать почему null
источник

a

aλeχknvl in Scala User Group
ээ у моих коллег *
источник

a

aλeχknvl in Scala User Group
коуд стайл существует в первую очередь для тех, кто в танке
источник

a

aλeχknvl in Scala User Group
а для себя можно и развлечься, написать val
источник

IP

Ilya Petrov in Scala User Group
Подскажите пожалуйста. Жил с ZManaged и прочими бракет подобными. Допустим мой ресурс - коннекшн к почтовому ящику. И всё хорошо, когда такой ресурс один и его время его жизни равно жизни программы или её куска. А если мне понадобилось, чтобы таких ресурсов было несколько и хранить их в какой-то мапе и периодически брать из базы новые сущности и на основе них создавать новые ресурсы и с ними работать. Есть ли какие-то пулы ресурсов? Куда лучше смотреть? Или хранить коннекшены в  мапе это плохая идея и нужно на каждую операцию поднимать ресурс(коннекшн), запрашивать что надо и сразу освобождать?
источник

λ

λoλcat in Scala User Group
Ilya Petrov
Подскажите пожалуйста. Жил с ZManaged и прочими бракет подобными. Допустим мой ресурс - коннекшн к почтовому ящику. И всё хорошо, когда такой ресурс один и его время его жизни равно жизни программы или её куска. А если мне понадобилось, чтобы таких ресурсов было несколько и хранить их в какой-то мапе и периодически брать из базы новые сущности и на основе них создавать новые ресурсы и с ними работать. Есть ли какие-то пулы ресурсов? Куда лучше смотреть? Или хранить коннекшены в  мапе это плохая идея и нужно на каждую операцию поднимать ресурс(коннекшн), запрашивать что надо и сразу освобождать?
источник

IP

Ilya Petrov in Scala User Group
Спасибо
источник