
Alexey
18.09.2018
10:50:05

Quantum Harmonizer
18.09.2018
10:50:11

dimiii
18.09.2018
10:50:14
Именно
Ну да, пока это коллективная исповедальня

Igor
18.09.2018
10:50:18

Google

Alexey
18.09.2018
10:50:23

Алексей
18.09.2018
10:50:35

Alexandr
18.09.2018
10:50:49

Алексей
18.09.2018
10:50:56

Alexandr
18.09.2018
10:51:08

Andrew
18.09.2018
10:51:14
Всем Kotlin, посоны.

Алексей
18.09.2018
10:51:25

Andrew
18.09.2018
10:51:58
Уф, притихло. ?

Artem
18.09.2018
10:52:33
Это было жёстко конечно

Mikhail
18.09.2018
10:52:53
половина срача основана на споре DI != DI-контейнер vs DI == DI-контейнер не надо так. Договритесь о терминологии

Alexey
18.09.2018
10:53:09
Это не DI и я уже сказал, почему
> In object-oriented programming (OOP) software design, dependency injection (DI) is the process of supplying a resource that a given piece of code requires.
Вот скажи мне что конструктор сюда не подходит

Алексей
18.09.2018
10:54:18
Ну DI поставляет готовые объекты и скрывает работу по их созданию
Делает ли это конструктор?

Google

Алексей
18.09.2018
10:55:01
Немного нет
Если вы планировали обсуждать текущие реализации - надо было говорить об этом, а не о DI в целом:)

Andrew
18.09.2018
10:55:37
Кто поставляет? Какие объекты? Цитату же уже привели, что DI — это *процесс* инъекции зависимостей.

Алексей
18.09.2018
10:56:08

Andrew
18.09.2018
10:56:31
А теперь давайте сраться о том, нужны ли DI-контейнеры.
Поехали :D

Алексей
18.09.2018
10:57:05

Alexey
18.09.2018
10:57:12
Дак мы об этом же и срались ?

Andrew
18.09.2018
10:57:35
Я вот с этим тезисом согласен — не все об этом срались
половина срача основана на споре DI != DI-контейнер vs DI == DI-контейнер не надо так. Договритесь о терминологии

Алексей
18.09.2018
10:58:03

Alexey
18.09.2018
11:00:46


Andrew
18.09.2018
11:06:06
Я напомню, с каких формулировок сия дискуссия началась — а дальше сами решайте, кто, что и как называет и кто что с чем путает :)
Ну вот ради простоты тестирования это всё и делается. Сложно отлаживать мы в JVM мире, с его DI, процессингом аннотаций в рантайме и прочим, уже получили и так ?
Ну, DI - вообще зло. Я пришел к выводу, что это тоже дань моде, причем часто чрезмерная. Не могу сказать, что он не нужен, но я посмотрел как его пихают во все дыры. После этого вообще отладить невозможно
Что там в DI сложно отлаживать) Для проекта больше 30 классов и одного разработчика DI must-have.
DI в текущем виде - это как раз про то, как намертво склеить чистые вычисления с сайд эффектами в один монолитный комок
Если что, в Хаскеле тоже вполне есть DI, я тут пробовал замокать IO монаду для тестирования main - вполне себе мокается для тестов, при этом в проде остаётся вполне себе IO


Alexandr
18.09.2018
11:10:41
мне интересно, что мешает поднять тестовый контекст с моками, который заинжектится? что там отлаживать то сложно...

Igor
18.09.2018
11:37:55
Всем привет! Нужно, чтобы в строке текст автоматически начинался с большой буквы, есть что-то типа toLower/UpperCase для этого? Или у кого пример есть. Заранее спасибо

Alexey
18.09.2018
11:38:23
Какой нибудь capitalString

Google

Andrew
18.09.2018
11:40:25
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/capitalize.html

Bogdan
18.09.2018
11:49:21

Алексей
18.09.2018
12:06:28

Bogdan
18.09.2018
12:07:21

Quantum Harmonizer
18.09.2018
12:07:58

Алексей
18.09.2018
12:08:04

Quantum Harmonizer
18.09.2018
12:08:39

Quantum Harmonizer
18.09.2018
12:09:03
только в последнем случае получаем проверку типов и прочие плюшки

Bogdan
18.09.2018
12:09:06

Алексей
18.09.2018
12:09:11

Quantum Harmonizer
18.09.2018
12:09:32

Bogdan
18.09.2018
12:09:58

Алексей
18.09.2018
12:10:28
то есть конфиг — не код? XML?
Ну я xml не часто юзаю для конфига, а даже если и юзаю- его всё равно проще поменять без лишних телодвижений в виде перекомпиляции и прочего

Quantum Harmonizer
18.09.2018
12:10:45

Bogdan
18.09.2018
12:10:53

Google

Алексей
18.09.2018
12:10:59
А вообще, не то обсуждали и я сразу сказал - это только если подходить к вопросу с точки зрения конфигов
Я ж рефлексию не использую
Еще раз - ушли от темы

Quantum Harmonizer
18.09.2018
12:12:08
Я ж рефлексию не использую
Ты можешь наконец сказать, что используешь?
А то сферическое рассуждение в вакууме — XML нечасто, конфиг не в коде, рефлексии нет. А что есть?

Алексей
18.09.2018
12:13:27
Вместо этого будем использовать квалифаер, и конкретную реализацию укаджем там, бинго, именно это ооп и инкапсуляция, у тебя все гвоздями прибито к конфигурации
Я так понимаю, речь тут про некоторую реализацию, работающую на конфиге, а я не говорил о реализации, я сказал, что с точки зрения солида new, использованный в явном виде вне класса/(чего-то еще)-инкапсулятора - нарушение

Admin
ERROR: S client not available

Алексей
18.09.2018
12:14:39
А не сам код
Или я путаю что-то?

Quantum Harmonizer
18.09.2018
12:15:01

Алексей
18.09.2018
12:15:05
Конечно, если у вас рефлексия во все поля и кодогенерация на лету - тогда да
пом — это конфиг, Maven — DI-фреймворк?
А при чем тут DI он или нет? Вы мне затираете про то, что конфиг - это код, так вот пом - такой же конфиг, как и любой другой и при этом никакой код там не меняется
Объясните, чего я не понимаю

Alexandr
18.09.2018
12:16:32

Quantum Harmonizer
18.09.2018
12:16:50

Алексей
18.09.2018
12:16:59
Используя new вы явно говорите, что создать. Если это не делается чем-то, специально для этого предназначенным (не конструктором, а некоторым абстрактным менеджером, классом, DI, еще чем-то) - это нарушение. Я только об этом

Quantum Harmonizer
18.09.2018
12:19:02
Точке входа позволено это делать.
Всё, проблема исчерпана.

Алексей
18.09.2018
12:19:52

Google

Quantum Harmonizer
18.09.2018
12:20:16

Alexey
18.09.2018
12:21:01

Алексей
18.09.2018
12:22:21
Ладно, видимо, закрыли:)

jied
18.09.2018
12:32:46
в котлине нет new

Mikhail
18.09.2018
12:40:21
Если ты зависишь от чего-то - ты не должен знать, чем это реализовано, если ты создаешь что-то через new - ты явно указываешь, что создавать, то есть знаешь, через что оно реализовано
Ты не понял, о чем говорит Quantum. Когда мы говорим об инициализации через конструктор мы не говорим об
class A(val Bparams, val Cparams){
val c = C(Cparams)
val b = B(Bparams)
}
как бы ты мог подумать. Мы говорим о
class A(val b: B, val c: C)
fun main(...){
val c = C(cParams)
val b = B(bParams)
val A = A(b, c)
}
Никакого нарушения солид, как видишь, нет. И для того чтобы самому руководить зависимостями DI-контейнер не нужен, достаточно фабрики

Алексей
18.09.2018
12:41:07
Согласен

Alexey
18.09.2018
12:41:35
Алилуя

Mikhail
18.09.2018
12:42:00
а все это увлечение DI контейнерами из-за того что терминологию используют неточно. Да, жить без DI нельзя, а вот без DI-контейнеров можно

Алексей
18.09.2018
12:43:12
Спасибо

Quantum Harmonizer
18.09.2018
12:44:18

Sergey
18.09.2018
12:45:34
dependency inversion != dependecy injection

Alexey
18.09.2018
12:46:01
Ну началось, теперь еще за сокращения потрём
dependency inversion - инет говорит что это DIP

Руслан
18.09.2018
12:48:20
Что-то я часто по делу, но неправильно поправлял