
Dim
04.02.2018
11:17:12
Но там как раз через аннотации ;)

Sergey
04.02.2018
11:17:53

Dim
04.02.2018
11:19:06
О конфиге знает библиотека которая собственно этим и занимается, просто не выворачивая кишки наружу.

Google

Dim
04.02.2018
11:19:53
(и они вывернутся в случае сбоя)

Sergey
04.02.2018
11:20:48

Dim
04.02.2018
11:21:08
Если конфигурирование через аннотации кто-то сделал....То наверное это кому-нибудь нужно?....))

Sergey
04.02.2018
11:21:44

Dim
04.02.2018
11:21:45

Alexey
04.02.2018
11:22:47

Dim
04.02.2018
11:23:25
И код этот тоже кто-то поддерживает.
А потом будут поддерживать ваш, с cats и другими волшебными вещами))) и так далее...в каждую эпоху все будут "удивляться"

Alexey
04.02.2018
11:24:36

Sergey
04.02.2018
11:24:39

Dim
04.02.2018
11:25:15
Хотя с возрастом это все сложнее и сложнее.

Google

Dim
04.02.2018
11:25:49
Ко мне недавно приходил 45 летний...сказал - не берут никуда. Из-за возраста.
Программист.

Sergey
04.02.2018
11:27:03

Daniel
04.02.2018
11:34:57
надо различать неявные вещи и те которые просто не понимаешь
с первым ты уже ничего не сделаешь, со вторым все в твоих руках

Dim
04.02.2018
11:36:04

Daniel
04.02.2018
11:38:36
видно я не донес мысль о различиях
понять как устроена аннотация и что за ней скрывается - это не поможет убрать всю ту неявность, которую они тащат
аналогично неаккуратному использованию имплистов
не понимать что делают кошаки - это вопрос конкретного человека, но неявного (кроме syntax._) там нет, наоборот тестируются выполнения законов

Dim
04.02.2018
11:39:33

Gennady
04.02.2018
11:45:12

Dim
04.02.2018
11:51:30
Почему в Spring это сделано не через явную загрузку конфига?

Alexander
04.02.2018
11:52:38

Dim
04.02.2018
11:54:46

Gennady
04.02.2018
11:55:14

Oleksandr
04.02.2018
11:55:17

Alexander
04.02.2018
11:55:23
Ну, каждому своё.

Dim
04.02.2018
11:55:24
Такой вроде бы мегафреймворк...а аннотациями...

Gennady
04.02.2018
11:55:44
плюс у явы большие проблемы с типизацией

Google

Gennady
04.02.2018
11:56:20
поэтому много что прощается - никто не будет писать в 5 раз больше кода ради того, что потом нельзя использовать

Александр
04.02.2018
12:09:56

Dim
04.02.2018
12:10:42

Александр
04.02.2018
12:11:44
пытаюсь не думать о себе в 45 лет, мало, кстати, видел адекватных программистов такого возраста, видимо в манагеры ушли но видел пачку людей дописывающих на делфи etc

Юрий
04.02.2018
12:12:15
Почему в Spring это сделано не через явную загрузку конфига?
Потому что так исторически сложилось. Ну и в джаве тебе придётся писать 100500 строк кода для представленгия своего конфига в виде кода, и это, естественно, так себе развлечение. Многие подходы в джаве обоснованны только тем, что джава многословный и невыразительный язык. В скале ты просто делаешь кейс класс, который мапится 1к1 на конфиг.

Dim
04.02.2018
12:13:00
А вот так нормально или тоже плохо?
trait MongoConfig {
val config = ConfigFactory.load()
val database = config.getString(s"mongodb.$mode.database")
val servers = config.getStringList(s"mongodb.$mode.servers").asScala
val userName = config.getString(s"mongodb.$mode.user")
val password = config.getString(s"mongodb.$mode.password")
val credentials = List(Authenticate(database, userName, password))
}
//и далее подмешиваем где нам это нужно.

Alexey
04.02.2018
12:14:29
да, так норм. но вот чтобы убрать боилерплейт чтения из конфига используют pureconfig
вместо pureconfig может быть что угодно что тебе больше нравится
они все плохие, но pureconfig самый, хм, неплохой

Юрий
04.02.2018
12:16:41
ну и да, pureconfig
они наконец сделали курсоры, так что вся моя боль с ним прошла

Dim
04.02.2018
12:17:21

Alexey
04.02.2018
12:17:48

Юрий
04.02.2018
12:22:18
Ок, буду копать pureconfig.
тебе потом с этим будет очень удобно работать. Можно будет при старте приложения в консоль плюнуть конфиг - это очень помогает. И ошибки очень ясные будут. И тестировать всё будет просто - в тесте руками создал конфиг и в путь

Dim
04.02.2018
12:22:51
Тут все приятно описано.

Александр
04.02.2018
12:23:12

Alexey
04.02.2018
12:24:36

Google

Nick
04.02.2018
12:24:57

Kirill
04.02.2018
12:25:02
ух, как же приятно описывать в тестах моки конфигурационных кейс классов, когда там куча полей и вложенности

Александр
04.02.2018
12:25:54

Kirill
04.02.2018
12:26:43
пишешь и проговариваешь - ух,мля
Ага, в такие моменты, когда там эта программно составленная конфигурация начинает занимать пол-экрана, у меня начинают в опенспейсе обои отклеиваться

Юрий
04.02.2018
12:27:27
так что нет, никаких проблем с большими конфигами не возникает
и моки вообще не нужны - просто создаешь в коде теста инстанс конфига -и всё

Alexey
04.02.2018
12:29:41

Kirill
04.02.2018
12:31:01
А что если конфиг монги состоит из множества полей? Ну, прямо вот много. Бизнес-логика у всех разная. Плюс, если вайрингом занимается какой-то macwire, то в сервис ты передаешь весь конфиг, и мокаешь ту часть, которая в сервисе используется, ну, например, when(appConfig.someConfig).thenReturn и тут вот этот огромный конфиг.

Nick
04.02.2018
12:33:01
Читалки конфига в тесте и не будет
Ты сам можешь руками создать кеис класс

Alexey
04.02.2018
12:33:30

Kirill
04.02.2018
12:33:34

Nick
04.02.2018
12:33:47
Нет, не читаю

Юрий
04.02.2018
12:33:52

Nick
04.02.2018
12:33:56
Потому что у вас тут опять дичь )

Kirill
04.02.2018
12:35:05

Nick
04.02.2018
12:35:40
Мне кажется Кирилл прошёл школу начинающего гопника)

Google

Юрий
04.02.2018
12:36:19

Kirill
04.02.2018
12:36:42
Нет, я хочу понять, почему люди безапеляционно утверждают, что они правы и их подход верный, а мой неверный, при этом не сталкиваясь с подобными проблемами.

Nick
04.02.2018
12:38:00

Юрий
04.02.2018
12:41:00

Kirill
04.02.2018
12:42:42

Alexey
04.02.2018
12:42:44

Юрий
04.02.2018
12:44:30

Kirill
04.02.2018
12:44:47

Nick
04.02.2018
12:45:21

Alexey
04.02.2018
12:45:25
Дефолтные параметры?
ну не всегда хочется дефолты задавать в кейс классе. мне больше нравится модель typesafe config.

Kirill
04.02.2018
12:45:41

Nick
04.02.2018
12:45:51

Alexey
04.02.2018
12:45:51

Kirill
04.02.2018
12:46:19

Nick
04.02.2018
12:48:25

Юрий
04.02.2018
12:50:01

Kirill
04.02.2018
12:50:13

Юрий
04.02.2018
12:50:55
Я просто предлагал решение, которое хорошо работает. Если ты делаешь иначе - твое право

Sergey
04.02.2018
13:50:43