
Alexey
05.12.2017
06:07:38

Mikhail
05.12.2017
06:08:53

Alexey
05.12.2017
06:09:23

Alexander
05.12.2017
07:15:43
А где пример стрима?
Все что есть - это итератор получаемый в ответ, как встроить в такую схему стрим - не понимаю.

Google

Mikhail
05.12.2017
07:16:16

Vladimir
05.12.2017
07:17:14
а есть для такого подхода истории успеха с командой больше 5 человек?
пара знакомых с такого как раз слезала по ходу роста

Mikhail
05.12.2017
07:18:00
По моему хром так пишут
Как раз потому что много людей одновременно работает

Denis
05.12.2017
07:21:03
SRE из гугла рассказывал что там так часто делают.

Mikhail
05.12.2017
07:29:11
Делать так можно, но нужно соблюсти много условий

Nick
05.12.2017
07:29:53
у них там несколько веток

Mikhail
05.12.2017
07:30:34
Проблема с код ревью - либо работать в парах, либо не деплоить автоматически на прод
Ну у хрома есть версии, да

Nick
05.12.2017
07:31:36
что мешает юзать обычный гитфлоу?)

Mikhail
05.12.2017
07:34:51
Стоимость интеграции долгих веток
Никогда не слышали "этот класс пока не трогай, я у себя в ветке отрефакторил".

Google

Vladimir
05.12.2017
07:42:33
кто первый смержил, того и тапки

Nick
05.12.2017
07:44:37

Mikhail
05.12.2017
07:45:10
Да, если есть код ревью, то можно придираться пока свою ветку не смержишь
Чем больше wip не интегрированный, тем больше конфликтов
Размер wip пропорционален количеству разработчиков и размеру фич
В какой-то момент это становится серьёзной проблемой

Nick
05.12.2017
07:51:03

Mikhail
05.12.2017
07:51:38
Проблема не в том как и когда решать конфликты, а в том что они вообще есть

Nick
05.12.2017
07:53:12
Эт не проблема)

Gennady
05.12.2017
07:54:24
конфликты в одних и тех же местах - признак неподходящей архитектуры/дизайна, в разных - плохого планирования
условный гитфлоу и WIPы могут решить вторую проблему, но не первую

Mikhail
05.12.2017
07:56:04
Допустим, я отрефакторил класс повсеместно использующийся и смерджил в мастер. 10 моих коллег в ветках этот класс тоже использовали поняли что у них конфликты, но не вполне осознают суть изменений (ну потому что им нужно больше вникнуть в контекст, чем автору). Зовут автора или тихо матерясь правят свой код, тратя своё время. Поэтому для значительных изменений люди пытаются подобрать момент когда меньше wip, зная какой гемор с конфликтами иначе.

Oleg
05.12.2017
07:56:36

Victor
05.12.2017
07:56:39
Выделить в отдельный модуль и подвергнуть его версионированию?

Nick
05.12.2017
07:57:04

Mikhail
05.12.2017
07:57:17
В чем плохой?

Alexander
05.12.2017
07:57:21

Oleg
05.12.2017
07:57:31

Vladimir
05.12.2017
07:57:45

Google

Mikhail
05.12.2017
07:57:54
Нужно сделать митинг "рефакторим класс A"?

Gennady
05.12.2017
07:58:07

Nick
05.12.2017
07:58:12

Mikhail
05.12.2017
07:58:28
А представьте что коллег не 10, а 100. Договориться не получится.

Александр
05.12.2017
07:59:18
писали 30 людями в 5 командах в 1 мастер, боли были при мерджах но не огромные

Nick
05.12.2017
07:59:25

Mikhail
05.12.2017
07:59:34
Э?

Gennady
05.12.2017
07:59:40

Александр
05.12.2017
08:00:33

Mikhail
05.12.2017
08:01:23
Я просто объясняю когда это может быть нужно. Не призываю создавать монорепу на 100 человек, но у кого-то это объективная реальность.

Gennady
05.12.2017
08:02:02

Victor
05.12.2017
08:02:08
тоже больно
Ну, выбирайте ту боль, с которой вы готовы смириться

Mikhail
05.12.2017
08:02:57
Переписывание на микросервисы - несколько лет...

Alexandr
05.12.2017
08:03:51
Скаланы, а есть ли разница между
x ne null и x != null ?

Gennady
05.12.2017
08:04:17
Бывает. Но если всем участвующим окей такой оверхед - на конфликты, проблемы, сложности развития - на большое бабло, в общем - то, наверное, есть и бенефиты. Наверное)
либо кто-то деньги считать не умеет

Oleg
05.12.2017
08:05:58

Alexandr
05.12.2017
08:06:29
Уточню вопрос

Google

Alexandr
05.12.2017
08:06:40
если equals дефолтный. Безо вяских
def equals(x: Any) = true

Oleg
05.12.2017
08:07:03
Можт ты написал у себя if (that == null)

Mikhail
05.12.2017
08:07:35

Oleg
05.12.2017
08:07:36
дефолтный это Object.equals или сгенеренный для case class?

Oleksandr
05.12.2017
08:08:00
вызов equals вс вызов сравнения ссылок
для null нет разницы

Oleg
05.12.2017
08:08:10
В любом случае ne null быстрее до первого JITа

Murat
05.12.2017
08:08:35
Проверку на null надо через ne делать имхо

Oleksandr
05.12.2017
08:08:51
почему?

Admin
ERROR: S client not available

Oleg
05.12.2017
08:08:59

Nick
05.12.2017
08:09:10

Oleksandr
05.12.2017
08:09:16
разница скорости этих 2 вариантов -- даже не спичка, а пылинка
+1 к опшну)

Gennady
05.12.2017
08:09:55

Alexandr
05.12.2017
08:10:27

Gennady
05.12.2017
08:11:22
какую проблему решаешь? (ц)

Oleg
05.12.2017
08:12:14

Nick
05.12.2017
08:12:42
@odomontois глянь лс

Oleg
05.12.2017
08:12:58

Google

Oleg
05.12.2017
08:13:58
Thou shall not nullify case classes ?

Gennady
05.12.2017
08:15:14
за обнуление в коде и убить можно

Alexandr
05.12.2017
08:15:16
Например, там есть
object A {
@volatile var e: A = _
}
и ниже
trait A {
if (A.instance ne null) {
LOG.error("A is already initialized!")
}
A.instance = this
}
и у меня течет крыша.

Gennady
05.12.2017
08:17:52
вот эт ничего себе паттерны проектирования

Oleg
05.12.2017
08:17:56
У меня теперь 7 дней или что там?

Gennady
05.12.2017
08:18:59
Олег, я не к тому что это невозможно, а к тому что человек, допускающий такую небезопасную реализацию в коде - не друг проекту и каждому программисту лично

Alexandr
05.12.2017
08:19:15
@odomontois в отрывке выше ты видишь рациональное зерно? Я на него уже полчаса смотрю и не укладывается.

Oleg
05.12.2017
08:19:36

Alexandr
05.12.2017
08:19:44
Погоди ....

Oleg
05.12.2017
08:19:47
Это у него такой lazy val из 90-х

Gennady
05.12.2017
08:19:48
передать в трейт инстанс компаньона и сделать доступ многопоточным
ага

Alexandr
05.12.2017
08:19:56
так ведь все равно утекает полусозданный объект

Oleksandr
05.12.2017
08:20:02

Gennady
05.12.2017
08:20:04
потому и проверка

Alexandr
05.12.2017
08:20:06
volatile не гарантирует же, что оно создастся...

Gennady
05.12.2017
08:20:22
именно