
Mikhail
12.07.2018
09:24:59
return в начале метода как бы указывает что у тебя метод помимо проведения полезной работы занимается чем нибудь еще побочным (например, проверяет валидность входных данных)
такое сложнее тестировать и должно было умереть с поддержкой Nullable типов

Konstantin
12.07.2018
09:25:50
не делай ретерн - кидай эксепшны )))

Quantum Harmonizer
12.07.2018
09:25:57

Google

Konstantin
12.07.2018
09:26:02
не следуют контракту - мочи сразу

Igor
12.07.2018
09:26:20

Alexander
12.07.2018
09:29:28

Andrey
12.07.2018
09:30:19

Quantum Harmonizer
12.07.2018
09:31:51

Konstantine
12.07.2018
09:37:06

dimiii
12.07.2018
09:37:32

Quantum Harmonizer
12.07.2018
09:38:05

Kirill
12.07.2018
09:49:01

Quantum Harmonizer
12.07.2018
09:49:40

Kirill
12.07.2018
09:50:23

Konstantine
12.07.2018
09:51:44

Google

Konstantin
12.07.2018
09:53:18
маргарет гамильтон с тобой не совсем согласна

Andrey
12.07.2018
09:54:02

Igor
12.07.2018
09:54:15

Kirill
12.07.2018
09:55:10

dimiii
12.07.2018
09:55:16

Kirill
12.07.2018
09:55:18
И всякие arrowKt

Andrey
12.07.2018
09:55:26

1337
12.07.2018
09:57:04
а какие щас ваще тренды?

Igor
12.07.2018
09:57:06

Andrey
12.07.2018
09:58:26

Igor
12.07.2018
10:00:09

dimiii
12.07.2018
10:00:39

Igor
12.07.2018
10:01:31

Andrey
12.07.2018
10:05:01
На котлине? Да вроде даже не начинали.
Не на котлине, а вообще. Ну а насчёт тренда в сторону ФП - я лично вообще не представляю, как ООП язык может не поддерживать ФП, если с точки зрения таксономии парадигм программирования, ООП является расширением ФП концепциями явного инкапсулированного состояния и наследования.

Aleksey
12.07.2018
10:05:12
Есть у меня кода кусок:
fun getMainComponent(): MainComponent {
if (mainComponent == null) {
mainComponent = getAppComponent().mainComponentBuilder().build()
}
return mainComponent!!
}
Переписываю на вот это:
fun getMainComponent(): MainComponent =
mainComponent ?: getAppComponent().mainComponentBuilder().build().also { mainComponent = it }
Код по-прежнему не нравится и могу придумать, как это обобщить. Есть идеи?

dimiii
12.07.2018
10:06:37

1337
12.07.2018
10:07:23
> .also { mainComponent = it }
?

Quantum Harmonizer
12.07.2018
10:07:34
код, который делает концептуально неправильные вещи, не должен выглядеть красиво

Google

Aleksey
12.07.2018
10:08:23
Нет. My bad, забыл важную вещь:
Так объявлено свойство:
private var mainComponent: MainComponent? = null
Так оно сбрасывается
fun destroyMainComponent() {
mainComponent = null
}

dimiii
12.07.2018
10:08:36

Konstantin
12.07.2018
10:08:51
забавно

Quantum Harmonizer
12.07.2018
10:08:57

Konstantin
12.07.2018
10:08:58
он админ в андроид канале
хаха

1337
12.07.2018
10:09:04
как-то безрадостно

Konstantin
12.07.2018
10:10:03
почему просто не отдавать каждый раз новый билд, смысл сакральный в чем

Aleksey
12.07.2018
10:11:33
Это кусок класса дерева компонентов приложения (Андроид, естессно). Новый можно создавать только если старый явно сбросили.
На джаве это выглядело ОК, а вот на котлине не покидает ощущение, ччто можно сделать лучше

Konstantin
12.07.2018
10:13:19
самописный di что ли

Aleksey
12.07.2018
10:13:31
yep

Kirill
12.07.2018
10:13:37
и дергай его

Aleksey
12.07.2018
10:14:37
Слабовато. У меня таких компонетнов штук 10
Думаю, что эту логику надо в отдельный тип завернуть

Kirill
12.07.2018
10:15:02
вынеси куда-нибудь все это

Aleksey
12.07.2018
10:15:07
да...

Konstantin
12.07.2018
10:15:09
альтернативный метод как сделать красиво - юзать di-либки )))

Google

Kirill
12.07.2018
10:15:16
fun getMainComponent(): MainComponent =
mainComponent
?: init()
fun init(): MainComponent =
getAppComponent().mainComponentBuilder().build()
.also { mainComponent = it }
сук

Konstantin
12.07.2018
10:15:26
за тебя там все эти ужасы написали другие люди

Kirill
12.07.2018
10:15:32
поломалось чутка

1337
12.07.2018
10:17:01
алсо оч криво смотрится

dimiii
12.07.2018
10:19:41
public val mainComponent by lazy {
getAppComponent()
.mainComponentBuilder()
.build()
}

Quantum Harmonizer
12.07.2018
10:20:07
вообще не о том

Kirill
12.07.2018
10:20:08
его же загулять надо

Aleksey
12.07.2018
10:21:20
Сам спросил, сам отвечу:
class Component<T>(private val builder: () -> T) {
private var instance: T? = null
fun getInstance() = instance ?: builder().also { instance = it }
fun destroy(){
instance = null
}
}
Ну и пропертя:
private var mainComponent = Component<MainComponent>({ getAppComponent().mainComponentBuilder().build() })
Норм?

Admin
ERROR: S client not available

Aleksey
12.07.2018
10:22:01
из-за неявного Create и явного Destroy красота теряется

Kirill
12.07.2018
10:22:07
это делегат?

Aleksey
12.07.2018
10:23:25
нет, пока просто тип.

Kirill
12.07.2018
10:25:52
напиши в джавовом стиле
if (instance == null) instance = builder()
return instance
в getInstance
так приятнее
глазам

Aleksey
12.07.2018
10:27:12
getInstance не nullbale должон быть

Kirill
12.07.2018
10:27:23
instance!!

Google

Bogdan
12.07.2018
10:28:59

Aleksey
12.07.2018
10:29:23

Kirill
12.07.2018
10:29:30
эстэты)

dimiii
12.07.2018
10:29:38
его же загулять надо
Ок, я в ваш монастырь лишь раз мельком заглянул, ужаснулся пляскам вокруг жизненного цикла и странной терминологии и убежал. Но неужели нельзя абстрагироваться от всей этой бани с var whatever: Type?. Например если уж так _надо_ зануляться, то дропать с корня.

Kirill
12.07.2018
10:30:20
поясни

dimiii
12.07.2018
10:31:17
поясни
Почему андроид разрабы форсят var mainComponent (c сопутствующей болью), вместо val mainComponent ?

Kirill
12.07.2018
10:31:53
занулить надо ссылки

dimiii
12.07.2018
10:32:49

Aleksey
12.07.2018
10:32:53

Quantum Harmonizer
12.07.2018
10:33:00

Egor
12.07.2018
10:33:02
Кстати, а вы заметили, к каким извращениям приходится прибегать, чтобы дать понять, что вы задаёте вопрос, а не Nullable тип?
Прошу прощения
тип ?

Quantum Harmonizer
12.07.2018
10:33:43

dimiii
12.07.2018
10:34:24

Kirill
12.07.2018
10:34:27
зачем?
это вопрос к Aleksey , я так понимаю он с ЖЦ борется
он на него ответил)

1337
12.07.2018
10:38:27
идея очень тупит с котлином, особенно если в классе было/есть много ошибок навроде отсутствуюющего импорта или скобки
вообще котлин гораздо медленнее в идее обрабатывается

Konstantin
12.07.2018
10:41:40
это фиксится железом

1337
12.07.2018
10:42:53
нет
тут точно все ок