
Берял
02.11.2016
10:06:38
если бы это можно было назвать передачей по ссылке, то ты передавал бы именно ссылку, и не мог бы изменить ее значение в методе

Alex Фэils?︙
02.11.2016
10:06:44
Push LObject

Берял
02.11.2016
10:06:51
то есть это реально не другая постановка определения

Митко Соловец?
02.11.2016
10:23:49

Google

Igor
02.11.2016
10:24:04

Митко Соловец?
02.11.2016
10:24:09
всегда по значению
самое прикольное, обсуждали это недавно и все так же повторяют мантру, про значение и ссылку, хех)

Александр
02.11.2016
10:43:04
После с++ смущает то, что имея переменную с ссылкой, можно обратиться к методам и полям объекта без гемора типа & и *.

Vanya
02.11.2016
10:44:12

Igor
02.11.2016
10:44:39

Митко Соловец?
02.11.2016
10:44:56
да, потому что она КОПИРУЕТСЯ
как и примитивное значение
т.е. происходит передача по значению
для примитива - его содержимое, для остальных - ссылка

Vanya
02.11.2016
10:46:52
Спасиб, просто тоже повторял мантру до этого момента

Stanislav
02.11.2016
11:03:22
null-safe говорили они, не будет бойлерплейт кода, говорили они

Maksim
02.11.2016
11:04:55

Google

Stanislav
02.11.2016
11:05:26
на моменте .filterValues { it != null } можно понять, что мапа теперь <Long, String>
хотя конечно очень узнкий юзкейс, а реализовать его на дженериках очень сложно

Oleksandr
02.11.2016
11:50:55
потому что T? -- уродство
для Option такой проблемы просто нет

Stanislav
02.11.2016
11:54:04
Т? -- это прекрасно, а Option -- это костыль, который говорит, что java не осилила поддержку null-safe на уровне языка

Oleksandr
02.11.2016
11:54:26
все так, только наоборот
Т? -- костыль

Stanislav
02.11.2016
11:55:49
если бы джава в компайл тайм могла бы запретить запихивать null в переменную Option<T>, я бы согласился, что Option -- это решение
и то
T в Option<T> уже не влезает, например

Oleksandr
02.11.2016
11:56:40
костыль, по определению -- наивная реализация частного случая общей проблемы

Pavel ?
02.11.2016
11:56:44
T? очень даже не уродство

Oleksandr
02.11.2016
11:56:57
это худшее, что есть в котлине

Stanislav
02.11.2016
11:56:59
а джава скопилирует Option<T> nullSafeVariable = null; -- это просто курам насмех

Pavel ?
02.11.2016
11:57:06
тогда ты не понял котлина)

Oleksandr
02.11.2016
11:57:26
я его очень хорошо понял

Pavel ?
02.11.2016
11:58:00
спорить не будем)

Maksim
02.11.2016
11:58:03

Stanislav
02.11.2016
11:58:08
зачем мне абстракция над null , которая помогает мне только когда все в команде следуют соглашениям? Для этого уже есть аннотация @Nullable

Oleksandr
02.11.2016
11:58:10
все просто -- не пиши наллы, и будет тебе счастье
а если поле может отсутствовать, то оборачивай в опшн

Stanislav
02.11.2016
11:59:13

Google

Oleksandr
02.11.2016
11:59:38
T? я называю костылем, потому что это частный случай частного случая монады, который хреново композируется

Stanislav
02.11.2016
11:59:46

Pavel ?
02.11.2016
12:01:09

Oleksandr
02.11.2016
12:02:10
бить его по пальцам
просто забудьте про наллы
это как с ие6 было -- он "жил" только потому, что его юзали программисты
это не фп и не из скалы
это азы здравого смысла

Pavel ?
02.11.2016
12:03:12
здравый смысл весьма индивидуальное понятие)) не стоит навязывать)

Oleksandr
02.11.2016
12:06:33
вы думаете, из джавы нельзя передать null в аргумент типа Т? ?

Maksim
02.11.2016
12:08:35

Stanislav
02.11.2016
12:08:58

Oleksandr
02.11.2016
12:09:25
если из джавы передали налл, тебя Т? не спасет

Maksim
02.11.2016
12:09:53

Maksim
02.11.2016
12:09:59
Ловишь NPE.

Stanislav
02.11.2016
12:10:13
проблема в человеческом факторе, кто-то очень тупой, за ним кто-то очень неответственный не проследил, кто-то ленивый не проверил, кто-то незнающий запустил это в продакшен -- и вот бизнес мертв из-за несоблюдения SLA

Maksim
02.11.2016
12:10:56
С клиента, если так понятнее.

Stanislav
02.11.2016
12:11:21
это проблемы переднего конца
Я позавчера словил NPE в hashCode()
вот такой жести не было бы, буть у джавы поддержка null-safe

Google

Oleksandr
02.11.2016
12:13:31
её нет, и Т? помогает лишь частично
и хуже, чем опшн
собственно, поэтому и не люблю этот Т?

Stanislav
02.11.2016
12:18:01
ладно, фиг с ним с котлином
чем Option<T> лучше чем @Nullable ?

Oleksandr
02.11.2016
12:18:37
Option(null) ==None
оно ловит наллы при создании

Stanislav
02.11.2016
12:18:49
null == null
null ловит null'ы еще раньше

Admin
ERROR: S client not available

Stanislav
02.11.2016
12:19:41
и не надо класса и объекта отдельного, который null держит

Oleksandr
02.11.2016
12:19:51
Nullable, в целом, норм, если все его ставят
но твой аргумент -- а если кто-то не поставил, то ты забыл проверить, и нпе
для Some(x) vs x есть -- один хоп
это где-то наносекунда на 100 вызовов

Stanislav
02.11.2016
12:22:51
то есть плюсов у Optional над @Nullable нет ?

Oleksandr
02.11.2016
12:23:11

Stanislav
02.11.2016
12:24:31
я не понимаю, зачем нужен класс над null-ом

Oleksandr
02.11.2016
12:25:15
чтобы явно показать, что вот этот аргумент может отсутствовать

Google

Stanislav
02.11.2016
12:25:16
и не знаю, что такое Optional(null). Есть Optional.of(null) и Optional.ofNullable(null)

Oleksandr
02.11.2016
12:26:05
ага, и он тоже лучше Т?
с такой точки зрения, аннотация и обертка равнозначны

Stanislav
02.11.2016
12:26:49
тем более
class MyClass { Optional<T> param; } -- считается моветоном
class MyClass { @Nullable T param; } -- норм

Oleksandr
02.11.2016
12:26:54
а Т? -- херня

Stanislav
02.11.2016
12:27:20
да забей ты на T?
я сейчас только в джавных терминах спорю
Optional vs @Nullable

Oleksandr
02.11.2016
12:28:03
окей
обертку куда проще юзать в стримах

Митко Соловец?
02.11.2016
12:28:03
нехилый тут пожарец

Stanislav
02.11.2016
12:28:15
Я год пытался приучиться к Optional. В итоге с ним проблем больше, чем от @Nullable

Oleksandr
02.11.2016
12:29:08
а nullable на уровне иде или джавас работает?

Stanislav
02.11.2016
12:29:21

Oleksandr
02.11.2016
12:29:36
подозреваю, что первое, и это ещё минус

Митко Соловец?
02.11.2016
12:30:05
нулабл это же от брэйнсов?

Oleksandr
02.11.2016
12:30:13
гугл вроде

Митко Соловец?
02.11.2016
12:30:23
@NotNull

Stanislav
02.11.2016
12:30:30
но ты пойми, Optional тебя не защищает от появления null в неожиданном месте

Митко Соловец?
02.11.2016
12:31:12
Станислав, так ты какой вывод сделать хочешь? что Котлин не нужен??

Oleksandr
02.11.2016
12:31:19
я понимаю
аннотация тоже, и вообще ничего не поможет