@jvmchat

Страница 682 из 2890
Берял
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
спорить не будем)

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

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

Stanislav
02.11.2016
11:59:13
Optional ввели скорее для обратной совместимости.
я не уверен, мне не кажется можно было ввести поддерку null-safe хоть в каком-то виде на уровне языка и с поддержкой обратной совместимости

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

Stanislav
02.11.2016
11:59:46
все просто -- не пиши наллы, и будет тебе счастье а если поле может отсутствовать, то оборачивай в опшн
спасибо, кэп. А что мне делать, когда один из ста программистов решил забить на это? Падать в рантайме?

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

это не фп и не из скалы это азы здравого смысла

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

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

Stanislav
02.11.2016
12:08:58
бить его по пальцам просто забудьте про наллы это как с ие6 было -- он "жил" только потому, что его юзали программисты
в смысле бить по пальцам? Можно даже уволить человека, только это не спасет тебя от того, что в продакшене получишь NPE

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

Maksim
02.11.2016
12:09:53
в смысле бить по пальцам? Можно даже уволить человека, только это не спасет тебя от того, что в продакшене получишь NPE
Открою тебе секрет, ты даже с nullable типами гарантировать этого не можешь. Ибо прилетит тебе с FE что-нибудь с null - и всё.

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
я понимаю аннотация тоже, и вообще ничего не поможет

Страница 682 из 2890