@kotlin_lang

Страница 750 из 982
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
а это где-то прописано? в kotlin style guides я не заметил...
Языку они не нужны. Кроме того идея сама подсказывает строки, которые возвращают значения, но если тело лямбды не линейное, я рекомендую писать. Иначе текст без IDE становится нечитаемым.

Andrey
12.07.2018
09:30:19
Теоретики из них хорошие, никто не спорит. Да только в реальном мире не всегда все идеально по учебнику идёт.
Все подобные рекомендации родились из практики либо прикладной математики, либо программирования, если между ними вообще есть разница.

Konstantine
12.07.2018
09:37:06
Все подобные рекомендации родились из практики либо прикладной математики, либо программирования, если между ними вообще есть разница.
И тут выходит аргумент об устаревании - практики каких годов? Теория, может, особо и не изменилась. Но вот практика и многие подходы.. Но я понял твое мнение, надеюсь, что там, в вашем идеальном мире, все хорошо

Kirill
12.07.2018
09:50:23
hype-driven development :/
Ну хоть не как жаваскрипте год назад)

Konstantine
12.07.2018
09:51:44
А что, в предыдущих годах был идеальный мир?
Нет, но системы были намного проще.

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

Andrey
12.07.2018
09:54:02
Аналогия с черным ящиком неуместна, т/к выход то у него всего один ) На то он и черный
Это не аналогия. Это пример того, какие конструкции проще всего тестировать.

Kirill
12.07.2018
09:55:10
Я думал он закончился пару лет назад ?
То-то сейчас фича реквесты на тайпклассы и ньютайпы в котлине)

dimiii
12.07.2018
09:55:16
Это не аналогия. Это пример того, какие конструкции проще всего тестировать.
Тогда при чем здесь черный ящик? https://en.wikipedia.org/wiki/Gray_box_testing

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

Andrey
12.07.2018
09:55:26
Я думал он закончился пару лет назад ?
Это почему же? У нас Big Data все забросили?

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

Igor
12.07.2018
09:57:06
То-то сейчас фича реквесты на тайпклассы и ньютайпы в котлине)
Котлин вообще новый языке, а в жс/джаве тренд уже кончился

Andrey
12.07.2018
09:58:26
Тогда при чем здесь черный ящик? https://en.wikipedia.org/wiki/Gray_box_testing
При том, что если каждая лямбда и каждый метод будут снаружи представимы в виде этой абстракции, то их будет проще тестировать.

Котлин вообще новый языке, а в жс/джаве тренд уже кончился
То-то в джаве пилят project Valhalla, и один из дизайнеров языка активно обсуждает, как в него добавить value types и data classes

Igor
12.07.2018
10:00:09
Это почему же? У нас Big Data все забросили?
На котлине? Да вроде даже не начинали.

dimiii
12.07.2018
10:00:39
При том, что если каждая лямбда и каждый метод будут снаружи представимы в виде этой абстракции, то их будет проще тестировать.
Это трюизм, я всего лишь заметил, что упоминание черного ящика неудачно и противоречит концепции тестирования черного ящика. В бутылку лезть не буду, т/к согласен во всем.

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 } Код по-прежнему не нравится и могу придумать, как это обобщить. Есть идеи?

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

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
instance!!
Это еще хуже смотрится

Aleksey
12.07.2018
10:29:23
instance!!
Вот с этого все и началось))

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
занулить надо ссылки
А занулять удаляя объект, содержащий cсылки (mainComponent) - не вариант?

Aleksey
12.07.2018
10:32:53
Quantum Harmonizer
12.07.2018
10:33:00
Egor
12.07.2018
10:33:02
Кстати, а вы заметили, к каким извращениям приходится прибегать, чтобы дать понять, что вы задаёте вопрос, а не Nullable тип?

Прошу прощения

тип ?

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
нет

тут точно все ок

Страница 750 из 982