
Денис
04.12.2017
15:01:31
Олрайт

Artjom
04.12.2017
15:02:09
Тут скорее чем больше аргументов тем тяжелее метод тем сложнее понять четам и сложнее его протестировать

Sergey
04.12.2017
15:02:23
Хотя не, там не все однозначно.

Google

Artjom
04.12.2017
15:03:45
Мне скорее интереснее cyclomatic complexity метода в этом случае

Arsen
04.12.2017
15:05:01

Artjom
04.12.2017
15:05:01
И часто, но не всегда, бывает, что чем больше параметров в методе, тем cc больше

Sergey
04.12.2017
15:05:39

Александр
04.12.2017
15:07:22
обмажуться своем Егором и давай спорить
а на работе, монадки не поглажены

Sergey
04.12.2017
15:07:48
Если бы монадки\

Александр
04.12.2017
15:09:46
- почему вы решили уволиться ?
- нет возможности гладить монадки

Artyom
04.12.2017
15:10:31

Sergey
04.12.2017
15:11:25
Казалось бы - при чем тут монадки)

Alexander
04.12.2017
15:13:59
:D
а всомнил, еще: no string concatention :D

Artjom
04.12.2017
15:14:55
Но сейчас же можно

Google

Artjom
04.12.2017
15:15:33
В конкатенацию стрингов

Alexander
04.12.2017
15:15:47
ну меня лично до Егора еще раздражала конкатенация, я теперь везде String.format юзаю и радуюсь жизни)
format напоминает теплый ламповый printf :D

guga
04.12.2017
15:16:36

Alexander
04.12.2017
15:16:48
да они тоже ок
главное чтобы не "x: " + x + "("+ (a+b)+"..... бля пиздец черт ногу сломит

Artjom
04.12.2017
15:17:57
А вот в грууви

Oleksandr
04.12.2017
15:18:09
s"value of x = $x"

Alexander
04.12.2017
15:18:23
еще при конкатенции можно на narrowing наступить, точнее легче это сделать

Oleksandr
04.12.2017
15:18:28
s"value of foo with x, y = ${foo(x, y)}"
идеально же

Alexander
04.12.2017
15:18:52
ну в нормальных языках такого не надо)

Artjom
04.12.2017
15:18:57
Это ты сейчас скалу пропихнул да?

Oleksandr
04.12.2017
15:19:02
конечно

guga
04.12.2017
15:19:35

Oleksandr
04.12.2017
15:19:36
согласись, что выглядит действительно удобно

Alexander
04.12.2017
15:19:40
пздц. как поднять бобла, куда нажать)

Oleksandr
04.12.2017
15:19:41

Arsen
04.12.2017
15:20:04
удобная фича же
в питон вот недавно добавили

Google

guga
04.12.2017
15:20:17
почему?
это как писать плейн sql в строке

Alexander
04.12.2017
15:20:22

Oleksandr
04.12.2017
15:20:39

guga
04.12.2017
15:20:40
ни тебе типов, ни подсказок

Oleksandr
04.12.2017
15:20:55

Arsen
04.12.2017
15:21:08
каких подсказок?

Artjom
04.12.2017
15:23:45
Сложурно

Alexander
04.12.2017
15:25:52
строка должна быть строкой, в идеале иммутабильной а не породией на шаблонизатор) Везде где я вижу что на строку навешивают функции шаблонов вызывает сомнения, если это не разметка какая-нить где специально строковые выражение подразумеваются как части одного большого шаблона

Artjom
04.12.2017
15:26:37
В грууви вот "hello $username "

Oleksandr
04.12.2017
15:26:42

Artjom
04.12.2017
15:26:59
Почти скала, только грууви

Oleksandr
04.12.2017
15:27:08
как если бы писал руками, только читаемее (сахар!)

Alexander
04.12.2017
15:27:36

Oleksandr
04.12.2017
15:29:05

Alexander
04.12.2017
15:32:31
вот понимаешь, когда я вижу format("hello %s", ....); я понимаю что вычисляется строка 1 раз и я могу ее интернировать даже если захочу, а когда я вижу "hello $x" то я не знаю что делается в итоге как оно разматывается нам внутри, это уже не строка а шаблон, который automagicaly заполняется. Зачем мне над этим думать, если я знаю точно что при иммутабильной строке я получаю всегда строку в которую нельзя ничего дописать, переписать иди удалить. Далее, вопрос эффективности встает, что если у меня строка 2GB и я не хочу чтобы ее "сахарнэ" груви парсил на наличие спец символов? Это можно легко и быстро отключить в конкретном месте кода?

Oleksandr
04.12.2017
15:33:35
есть спека на это дело
вызывается x.toString
ну и там все абсолютно иммутабельно на выходе
то есть
sb = new StringBuilder("hello" )
sb += x.toString
return sb.toString


Александр
04.12.2017
15:34:13
вот понимаешь, когда я вижу format("hello %s", ....); я понимаю что вычисляется строка 1 раз и я могу ее интернировать даже если захочу, а когда я вижу "hello $x" то я не знаю что делается в итоге как оно разматывается нам внутри, это уже не строка а шаблон, который automagicaly заполняется. Зачем мне над этим думать, если я знаю точно что при иммутабильной строке я получаю всегда строку в которую нельзя ничего дописать, переписать иди удалить. Далее, вопрос эффективности встает, что если у меня строка 2GB и я не хочу чтобы ее "сахарнэ" груви парсил на наличие спец символов? Это можно легко и быстро отключить в конкретном месте кода?
один раз посмотри как делаеться, в чем проблема ?
//case1
String s1 = "Hello" ;
for( int i = 0 ; i < 5 ; i ++){
s1 = s1+ "1" ;
}
//case1
String s1 = "Hello" +"!" +"!" +"!" +"!" +"!" ;
Не смущает что будут выполнены разные не явные для человека оптимизации?


Alexander
04.12.2017
15:41:27
один раз посмотри как делаеться, в чем проблема ?
ну не так просто как кажется. У меня есть задача Х и инструмент Z, инструмен Z хорошо решает задачу X и даже ее производные задачи X', а тут получается полявлется интсрумент Y, который пытается собой заменить инстурмент Z, однако при любом более менее пристальном рассматрении выдает себя за собственно за инстурмент Z. Т.е теперь нужно "посмотреть один раз" не только как оно делается в инстурменте Z но еще и в этом медиаторе в лице инстурмента Y. Он конечно может разматывать там все в Java, то в long-term это создает больше вопросов чем ответов

Google

guga
04.12.2017
15:41:40
меня в string builder смущает вот такой вывод
public static void main(String[] args) {
String n = null;
StringBuilder stringBuilder = new StringBuilder("start ");
stringBuilder.append(n);
stringBuilder.append(" end");
System.out.println(stringBuilder.toString());
}
start null end

Oleksandr
04.12.2017
15:43:12
null — зло

guga
04.12.2017
15:43:46
null — зло
но это java, никогда не знаешь, когда тебе налл в лицо сунут

Admin
ERROR: S client not available

Vitalii
04.12.2017
15:43:48
null — зло
Так а если он извне приходит и потом к SB попадает?
Из-за такого поведения городить тернарки/проверки приходится.

Oleksandr
04.12.2017
15:43:49
юзать его можно только в кишках либы/метода для производительности, и ни за что не надо его выставлять наружу

Александр
04.12.2017
15:44:03

Oleksandr
04.12.2017
15:44:03
для внешних либ котлин так же не знает
если что :)
и так же будет падать

Alexander
04.12.2017
15:44:36

Vitalii
04.12.2017
15:44:48

Oleksandr
04.12.2017
15:45:08

Alexander
04.12.2017
15:45:24
в кретсах 20 уже spaceship operator есть (будет) :D

Vitalii
04.12.2017
15:45:25

Oleksandr
04.12.2017
15:45:37
я не про тернарку
а про то, что "все есть выражением"

Google

Oleksandr
04.12.2017
15:45:51
иф в джаве ничего не возвращает

guga
04.12.2017
15:45:56

Vitalii
04.12.2017
15:46:12

Oleksandr
04.12.2017
15:46:15
в котлине вроде сделали (опять) как в скале — то есть "все есть выражением"

Igor
04.12.2017
15:47:41

Vitalii
04.12.2017
15:47:55
ну не нужен этот элвис тогда
Элвис — это не if (foo) a else b
Это аналог тернарки
Элвис (?:) — это if (a == null) b else a
Там свой фетиш вокруг всего, что содержит ?

Oleksandr
04.12.2017
15:48:01
должно не компилироваться

Anton
04.12.2017
15:48:09
kotlin!
тсс... не мешай жаве разиваться, может к 2020 хотя бы автовывод типов осилит

Igor
04.12.2017
15:48:21

Oleksandr
04.12.2017
15:48:43
это было "может, сделать так?"

Igor
04.12.2017
15:48:53

Oleksandr
04.12.2017
15:50:06

Vitalii
04.12.2017
15:50:34