
Bogdan
22.08.2016
09:46:02
получается, если я передаю указатель на объект в c++, то это не передача по ссылке?
ведь в функции будет копия указателя

guga
22.08.2016
09:47:20

Митко Соловец?
22.08.2016
09:47:34
в с++ ты при = копируешь объект полностью

Google

Митко Соловец?
22.08.2016
09:47:50
а в джаве у тебя две переменные на одну ссылку указывают

guga
22.08.2016
09:48:00

Митко Соловец?
22.08.2016
09:48:28
и если не копировать ссылку, что есть значение переменной, тогда внутреннее присвоение повлияет на внешнюю ссылку

guga
22.08.2016
09:49:06
Верно, но в то же время ты говоришь
>объектов - их ссылки, но при этом изменение ссылки внутри функции не повлияет на внешнюю ссылку

Митко Соловец?
22.08.2016
09:49:38
да
я имею в виду вот это
A a = ...
A b = a;
function(A var) { var.set(..); var = c}
function(b);
вот если мы var = сделаем, a на c указывать не будет

James Tiberius Kirk ?
22.08.2016
09:51:30

Митко Соловец?
22.08.2016
09:51:38
но изменение var.set() отобразятся на a
а если бы не было копирование значения переменной - в данном случае значение - это ссылка, то в а было бы c

guga
22.08.2016
09:54:58
Тогда ты своей репликой только запутал, не знаю как всех, но меня так точно. Я уж думал за пол года в java что-то кардинально поменялось.

Митко Соловец?
22.08.2016
09:57:30
не знаю, что там не так с моей репликой, я просто процитировал документацию

Google

Митко Соловец?
22.08.2016
09:58:38
http://www.javable.com/columns/robinson/letters/01/

Bogdan
22.08.2016
10:04:47
короче, праильно будет пересказать спеку
потому что у каждого свои представления о "ссылках"
тогда в такой формулировке вопрос некорректный

Митко Соловец?
22.08.2016
10:08:07
ну вот по ссылке выше, цитат прям из спеки

guga
22.08.2016
10:15:00
из-за таких особеностей жабки, стараюсь избегать var и юзать только final / val

Митко Соловец?
22.08.2016
10:15:30
всегда и везде?)
а если по бизнес-логике такое нужно, то не избегаешь??

guga
22.08.2016
10:17:56
вот не помню такого, что бы прямо по зарез нужно было именно изменить, что мешает вернуть новый объект, с нужными значениями, а старый отдать в gc, если он больше никому не нужен.
Хотя, помню в jdk есть какие-то классы, в которые передаешь dst для операции. То ли system.arraycopy то ли работа с сетью.

Митко Соловец?
22.08.2016
10:21:00
например войд методы валидации

guga
22.08.2016
10:21:49
Это те которым нужно передать мапу для ошибок?
вот это лютый зашквар

Митко Соловец?
22.08.2016
10:22:21
норм ты ща обоссал спринг валидатор
?????
правда в чем зашквар, непонятно

guga
22.08.2016
10:24:48
меня очень бесило писать код аля
Map<String, String> errors = new HashMap<>();
Validator.validate(entity, errors);
if(errors.isEmpty()){
...
} else {
...
}
статические методы, тупо убивают ооп

Митко Соловец?
22.08.2016
10:25:39
ну во-первых, можешь сделать статический импорт
тогда будет коротко и красиво

Google

Митко Соловец?
22.08.2016
10:25:55
во-вторых, можно это обернуть в нестатический кастомный метод
или сделать спринг бобом
но это не отменяет того, что накапливать ошибки таким вот способом крайне удобно
и я лично не вижу в этом зашквара

guga
22.08.2016
10:27:05
почему валидатор возвращает void?
и зачем ему мапа с ошибками как параметр?
а ещё у меня пригорело от того, что лид любил вот это и везде с собой носил. http://oval.sourceforge.net/

Митко Соловец?
22.08.2016
10:31:59
ну окей, можешь булеан возвращать
мапа с ошибками - очевидно, чтобы все ошибки передать на фронтенд
в кейсах, где юзеру это важно

guga
22.08.2016
10:32:57
эм, а почему возвращать мапу?

Митко Соловец?
22.08.2016
10:33:26
что?

Митко Соловец?
22.08.2016
10:33:56
почему бы не возвращать мапу?

guga
22.08.2016
10:34:23
ну, мапу с ошибками, и дальше точно так делаешь, если объект валиден, мапа пустая, нет — в ней лежат эрроры

Митко Соловец?
22.08.2016
10:34:35
окей
а теперь по цепочке вызови 10 валидаторов
что с твоим кодом будет?)
или будешь временные ссылки создавать
конечно я задумывался над тем, что ты говоришь, но посмотрев код спринга, я понял, что передавать 1 карту всегда выгоднее

guga
22.08.2016
10:37:57
В нутрях спринг можешь пробрасывать как ему угодно. Насколько я помню, там валидация на аннотациях, и оно всё равно рефлексией шарится по твоих классам, так что завести у себя внутри ещё мапу для ошибок, не так уж накладно.

Google

guga
22.08.2016
10:39:14
Но это их решение и оно видно всем нравится, раз не меняют

Митко Соловец?
22.08.2016
10:40:01
учитывая, что можно обойтись одной и воспользоваться волшебством ссылок в жабе
https://jira.spring.io/browse/SPR-12954
гуга, смотри

guga
22.08.2016
10:43:05
То что я видел в scala, Они возращают Try, где в Success лежит твоя валидная сущность, а Failure ошибка или лист ошибок

Митко Соловец?
22.08.2016
10:44:45
для маленьких приложений норм вообще

guga
22.08.2016
10:47:35
Собственно так же делает sparkjava, ratpack и возможно vertx.

Towhopu
22.08.2016
10:48:01

Admin
ERROR: S client not available

Митко Соловец?
22.08.2016
10:48:49
вот поэтому контроллеры должны быть тонкими
иначе лапша потом будет адская

guga
22.08.2016
10:49:34
лол, всё никак не прочту его книгу. Как он живет с жавой, совсем не понятно.

Andrey
22.08.2016
10:50:21
К примеру, он говорил, что нельзя использовать составные имена, типа userName, так как это свидетельствует, что вы плохо продумали структуру класса.

guga
22.08.2016
10:51:55
Ну, после того как я услышал, что лямбды не нужны, нужно всё фигачить через анонимные классы и увидел его код на гитхабе, я его в серьез не воспринимаю. Но книга, говорят, забавная.

Andrey
22.08.2016
10:51:57
Так как вам надо создать класс User, а в нём поле name.

Митко Соловец?
22.08.2016
10:52:47
вот говорят

Google

Митко Соловец?
22.08.2016
10:52:53
что кодинг - это искусство и творчество
а в итоге создаем сами себе преграды
живем на веру
это не правильно вообще

Andrey
22.08.2016
10:53:38

guga
22.08.2016
10:53:41
https://github.com/yegor256/

Митко Соловец?
22.08.2016
10:53:50

Andrey
22.08.2016
10:53:50
А через год *facepalm*)

Митко Соловец?
22.08.2016
10:53:53
как ты это понял?
потому что дяди сказали так?
я считаю, надо просто придерживаться каких-то основ, но уж в реализации оставьте творчество

Andrey
22.08.2016
10:55:00
потому что дяди сказали так?
Нет, я сам себя стараюсь оценивать. В данном случае я сумел вынести всю логику в отдельные методы. И теперь у меня есть 2 метода, которые обрабатывают информацию. А остальные методы являются прокси к ним для разных форматов данных.

guga
22.08.2016
10:55:20

A ?
22.08.2016
10:55:30

Митко Соловец?
22.08.2016
10:55:45
давайте как роботы писать одинаковый код

Andrey
22.08.2016
10:56:06

guga
22.08.2016
10:56:52
Эм, так для этого и есть спринги всякие, что от проекта к проекту, только бизнес логика отличалась.

ThisIs
22.08.2016
10:56:56
что за jspa(java servlet alias)
кто знает что это