@kotlin_lang

Страница 197 из 982
Alexander
20.06.2017
08:43:04
это называется by default, тоже не изменят

Quantum Harmonizer
20.06.2017
08:43:15
что угодно, зачем геттеры генерить то без спроса?
Что значит «без спроса»? val подразумевает, что значение свойства можно получить, для этого нужен геттер. var — что его ещё и можно установить, для этого нужен сеттер. Где здесь спрос нужен?

Ivan
20.06.2017
08:43:16
Зато не нужно ставить анотации, что бы они были))
вот с паблик и файнал классами это в тему и удобно. с геттерами нет

Google
Ivan
20.06.2017
08:44:08
А если не надо будет, то ты поле оголишь? :)
не надо будет я просто ничего не буду делать, паблик поле.

Quantum Harmonizer
20.06.2017
08:45:00
не надо будет я просто ничего не буду делать, паблик поле.
Это сломанная инкапсуляция. Можно это поле засеттить извне — и всё сломать. Нельзя впилить логику в геттер/сеттер (потому что его нет), не ломая совместимости.

Quantum Harmonizer
20.06.2017
08:45:30
Паблик поле должно быть запрещено на уровне языка.

Кроме, как раз, const.

Ivan
20.06.2017
08:45:44
это две проблемы о которых до котлина вы даже и не слышали, геттеры и нулабилити. и котлин героически их решил.

Руслан
20.06.2017
08:46:21
Ivan можно поинтересоваться, читал ли ты Effective Java?

Cargeh
20.06.2017
08:47:03
А как котлин решает проблему private mutable поля, к которому нужен доступ, но который нельзя изменять?

Quantum Harmonizer
20.06.2017
08:47:04
это две проблемы о которых до котлина вы даже и не слышали, геттеры и нулабилити. и котлин героически их решил.
Ты никогда не генерил геттеры? У меня есть разные ДТО, реализующие один интерфейс, я не могу оголить поля. Никогда не ловил NPE? Я ловил, поэтому наполняю Java-код всякими requireNonNull.

Google
Ivan
20.06.2017
08:48:30
Ты никогда не генерил геттеры? У меня есть разные ДТО, реализующие один интерфейс, я не могу оголить поля. Никогда не ловил NPE? Я ловил, поэтому наполняю Java-код всякими requireNonNull.
ну смотри. в джаве. если тебе нужен геттер ты его делаешь, не нужен - не делаешь. Если поле может быть налл, ставишь аннотацию, если не должно или при налл должно упасть - не ставишь. В котлине все наоборот. Не нужен геттер? А мы его уже сделали. Поле не может быть налл? А мы его уже сделали таким и костыляй лейзями или лейтинитами.

Ivan
20.06.2017
08:55:24
Если тебе не нужен геттер, просто делаешь приватное свойство. Вместо аннотаций есть ?. lazy — вообще о другом. lateinit — костыль, который в нормально спроектированной системе не возникает.
Не хочу я приватное свойство) я хочу обычное паблик поле, мб мне принципиально избавиться от геттеров, тем более прямое обращение быстрее, чем через геттерсеттер

Если тебе не нужен геттер, просто делаешь приватное свойство. Вместо аннотаций есть ?. lazy — вообще о другом. lateinit — костыль, который в нормально спроектированной системе не возникает.
То есть ты вьюхи налабл делаешь? И сколько раз тебе нужно протестить условную активити, чтобы заметить, что ты в лэйаут не добавил вьюху?

Если не учитывать екстеншнс и прочее

Quantum Harmonizer
20.06.2017
08:57:46
Не хочу я приватное свойство) я хочу обычное паблик поле, мб мне принципиально избавиться от геттеров, тем более прямое обращение быстрее, чем через геттерсеттер
В большинстве случаев поддерживаемость предпостительнее производительности. Прямое обращение к полю — это угловой случай, который вообще существует только где-то в J2ME.

даже в тестах, lateinit на твой взгляд костыль?
Пожалуй, в тестах это нормально, потому что тест нельзя назвать классом, который описывает нормальный, целостный объект.

Ivan
20.06.2017
08:59:24
В большинстве случаев поддерживаемость предпостительнее производительности. Прямое обращение к полю — это угловой случай, который вообще существует только где-то в J2ME.
Ну опять, это моя головная боль, где нужно, а где нет. Мб я тяжёлую вьюху рисую, у меня куча полей. Попробуй их всех проаннотируй, да и ради чего?

Boris
20.06.2017
09:00:19
ну смотри. в джаве. если тебе нужен геттер ты его делаешь, не нужен - не делаешь. Если поле может быть налл, ставишь аннотацию, если не должно или при налл должно упасть - не ставишь. В котлине все наоборот. Не нужен геттер? А мы его уже сделали. Поле не может быть налл? А мы его уже сделали таким и костыляй лейзями или лейтинитами.
вот интересно, если котлин такой неудобный и спроектирован так неудачно, зачем сидеть в чятике про него? я гналась за вами три дня сказать насколько вы мне безразличны? в джаве ты всё делаешь руками, в котлине все базовые кейзы автомитизированы. Когда надо есть гетеры, когда не надо -- нет. Если тебе очень надо убрать геттер и сделать публичное поле это можно сделать аннотациями, только не надо оправдывать говнодизайн тем, что без геттеров быстрее, джавамашина заинлайнит геттер без всяких проблем, если он будет часто дергаться по поводу может/не может быть нал вообще ерунда, потому что это почти теже аннтотации, только из коробки работают

Quantum Harmonizer
20.06.2017
09:00:27
Konstantin
20.06.2017
09:01:31
Ivan
20.06.2017
09:03:01
>по поводу может/не может быть нал вообще ерунда, потому что это почти теже аннтотации, только из коробки работают одно дело из коробки, лругое дело делать налалбл все подряд, что нужно и не нужно.

Google
Ivan
20.06.2017
09:04:18
Так не делай наллабл всё подряд!
я и говорю, не налабл значит костылять лейтинитами. как ты еще обьвишь не налабл поле, без инициализации в конструкторе

Boris
20.06.2017
09:06:22
Ну почему, хейт — это норм, развести срачик чтобы понять где хорошо а где плохо. Мне вот как-то нечто подобное заявили за то, что я держу за говно материал дизайн в андроиде.
хейт это не то, чтоыб норм, ведь можно дискуссию вести и в конструктивном ключе, просто непонятно: вот ты увидел язык, посмотрел его (например хаскель), увидел, что он тебе не нравится, разве ты идешь в чятик, где обсуждают хаскель, чтобы написать им, что язык сделан херово и все эти ваши манады никому не впились и неудобные?

Umren
20.06.2017
09:06:49
это просто троллинг же был бы

Boris
20.06.2017
09:07:48
это просто троллинг же был бы
да, чтобы не думать о людях плохо, лучше просто думать, что это троллинг ?

Ivan
20.06.2017
09:08:15
Можно пример из жизни (не из плохо спроектированного Android)?
да что угодно, вьюха, презентер. Я их проинитю в онкреате, соответсвтенно в правильном в отличии от джавы котлине, эти поля должны быть налабл

Ivan
20.06.2017
09:09:32
Это же андроид, не?
скорее всего

Konstantin
20.06.2017
09:09:36
да что угодно, вьюха, презентер. Я их проинитю в онкреате, соответсвтенно в правильном в отличии от джавы котлине, эти поля должны быть налабл
Ну косяки платформы не в счет, тут, по большому счету, нет другого выхода. В Dagger2 попытались сделать ок, но получился дикий монстр.

Ivan
20.06.2017
09:10:32
то есть это не налабилити не нужно, а платформа виновата?

Konstantin
20.06.2017
09:12:44
Ну вообще да. То есть, реально сейчас отказаться от nullable нет возможности. Ну, теоретически можно запретить вообще как явление в языке, но kotlin прагматичный и все всё понимают.

Konstantin
20.06.2017
09:13:29
А как еще сделать презентер, который гарантированно в любой момент будет not-null в андроиде? И почему тут котлин вообще виноват?

Quantum Harmonizer
20.06.2017
09:14:08
скорее всего
А если взять что-нибудь нормальное?

Ivan
20.06.2017
09:14:09
потому что есть обезьянка перед монитором, которая получает за это деньги
и никакими котлинами не закрыть возмыжные ошибки без костылей этих ваших

Google
Quantum Harmonizer
20.06.2017
09:14:59
то есть это не налабилити не нужно, а платформа виновата?
Наллабилити, ИМХО, позволяет использовать null (в Java это антипаттерн) вместо Optional.

Ivan
20.06.2017
09:15:18
то есть мы делаем лейтинит, который ровным счетом так же упадет, как и в джаве без налабилити. Соу возникает вопрос, а зачем тогда это вот все?

Denis
20.06.2017
09:15:32
Прям "ObjC - Java edition"

Quantum Harmonizer
20.06.2017
09:15:55
Konstantine
20.06.2017
09:16:38
Я не пойму, что за кривизну там пишете, что lateinit\by lazy падает?

Quantum Harmonizer
20.06.2017
09:16:52
и никакими котлинами не закрыть возмыжные ошибки без костылей этих ваших
Обезьяне нужны инструменты, которыми она с меньшей частотой будет простреливать себе ступни.)

Ivan
20.06.2017
09:16:58
Лейтинит нужен там, где андроид обосрался.) И в тестах, как говорилось выше.
никто не мешает в джаве создать обюьект, который не будет создаваться по конструктору, а по условному методу инит. В нем тоже котлин всрется или и тут джава будет виновата?

Konstantine
20.06.2017
09:17:05
Вам там надо написать книгу "Как выстрелить себе в ногу при любых раскладах" или вроде того)

lateinit падает же.
От чего падает? Может я что-то не пойму?)

Admin
ERROR: S client not available

Ivan
20.06.2017
09:17:37
Обезьяне нужны инструменты, которыми она с меньшей частотой будет простреливать себе ступни.)
никто не простреливал их, пока не узнал, что оказывается котлин есть. Это как с даггером, спокойно передавали в конструкторы абстракции, а потом как подурели)

Denis
20.06.2017
09:18:20
С хабра val a: Int get() = Random().nextInt()

Konstantine
20.06.2017
09:18:31
Если забыть инициализировать.
Там не забывайте) Если забыть посмотреть какой светофор горит машина может сбить - не забываете же посмотреть)

Quantum Harmonizer
20.06.2017
09:18:32
Denis
20.06.2017
09:18:41
и что?
val не как val, не?

Ничего не смущает?

Google
Quantum Harmonizer
20.06.2017
09:18:54
val не как val, не?
val == readonly, ничего не смущает

Ivan
20.06.2017
09:19:02
Никогда NPE не ловил?
нпе это вопрос дисциплины, а не языка.

Denis
20.06.2017
09:19:11
val == readonly, ничего не смущает
У меня для тебя плохие новости

Руслан
20.06.2017
09:19:15
никто не простреливал их, пока не узнал, что оказывается котлин есть. Это как с даггером, спокойно передавали в конструкторы абстракции, а потом как подурели)
В джаве я могу сделать field injection, что там считается плохой практикой. Вот вы делаете field injection пишите на java, приходите в kotlin. А в Kotlin оказывается делать field injection не камильфо и вместо того чтобы делать constructor injection мы будем плакать что нам не дают делать injection плохими практиками.

Denis
20.06.2017
09:19:20
Еще раз: get() = Random().nextInt()

Подумай над этим кусочком кода

Quantum Harmonizer
20.06.2017
09:19:35
нпе это вопрос дисциплины, а не языка.
Есть язык, который заставит тебя быть дисциплинированным

Quantum Harmonizer
20.06.2017
09:19:53
Подумай над этим кусочком кода
Ты ни одному человеку, который пишет на Котлине, глаза не открыл.

Konstantin
20.06.2017
09:20:01
И защищает от чужой недисциплинированности. Ну, насколько может.

Denis
20.06.2017
09:20:10
Ну огда смысл от всего "защищать" ?

Раз можно так-же отстрелить ногу вместе с жопой

Митко Соловец?
20.06.2017
09:20:24
@HeapyHop привет

Denis
20.06.2017
09:20:26
Только более мудацким вариантом

Митко Соловец?
20.06.2017
09:20:30
скинь свой доклад про Котлин

Quantum Harmonizer
20.06.2017
09:20:48
Только более мудацким вариантом
обычный вариант, эквивалентен такому же геттеру в Java

Quantum Harmonizer
20.06.2017
09:21:42
бля, надо работать, а тут тааакой срач :)

val == public final ?
val == read-only

Konstantine
20.06.2017
09:22:29
Да какой же это срач)

Denis
20.06.2017
09:22:40
Погорели немного, норм

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