Aragorn_

Пользователь

Регистрация: 20.12.2021

Сообщения: 389

Рейтинг: 48

Нарушения: 100

Aragorn_

Регистрация: 20.12.2021

Сообщения: 389

Рейтинг: 48

Нарушения: 100

AMDkrolyan сказал(а):

я ничего не понял

 

причем здесь уникальность

 

ты прост добавил строчку в коллекцию и сохранил ее, ну можешь юзать сет как аналог фильтру, но честно говоря также можно проверить, что данные не повторились случайно, такой вариант более логичный и удобный

 

типо на уровне бизнес логи ты подготовил данные, что надо сохранить, а потом передаешь это на repository слой

 

а так ты обременяешь репо слой, тем что ему еще надо хешкод ентити вычитывать и т.д.

 

Нажмите, чтобы раскрыть...

Мды.

Я вообще не вижу логики в твоем мышлении. Причем тут бизнес логика и проверка что данные консистентны? Бизнес логика должна решать бизнес, и как можно больше валидации нужно решать на уровнях сущностей/дто. И если возможно что-либо предотвратить на уровне структур данных, то так нужно и делать. Зачем тогда ваще придумали сет? Ну давай проверять обычный массив на дубликаты и удалять их по индексам ху**. Массив так вообще не содержит каких-то этих ваших бесполезных полей, в нем не создаются объекты лишние, методы не вызываются, просто делаем array[] и не паримся, всеголишь делаем проверки в "бизнес логике" перед каждым использованием этого массива и после 

AMDkrolyan

Пользователь

Регистрация: 21.04.2013

Сообщения: 7662

Рейтинг: 2908

Нарушения: 10

AMDkrolyan

Регистрация: 21.04.2013

Сообщения: 7662

Рейтинг: 2908

Нарушения: 10

Aragorn_ сказал(а):

Мды.

Я вообще не вижу логики в твоем мышлении. Причем тут бизнес логика и проверка что данные консистентны? Бизнес логика должна решать бизнес, и как можно больше валидации нужно решать на уровнях сущностей/дто. И если возможно что-либо предотвратить на уровне структур данных, то так нужно и делать. Зачем тогда ваще придумали сет? Ну давай проверять обычный массив на дубликаты и удалять их по индексам ху**. Массив так вообще не содержит каких-то этих ваших бесполезных полей, в нем не создаются объекты лишние, методы не вызываются, просто делаем array[] и не паримся, всеголишь делаем проверки в "бизнес логике" перед каждым использованием этого массива и после 

Нажмите, чтобы раскрыть...

ну по твоему код который вставляет дупликаты типо ок ?

 

даже если условно будет в риал тайм прилетать по 100 объектов в запросе, не логичнее их сначала фильтрануть на уникальность, а потом только передать на сохранение, а не пихать эту логику в ентити

Aragorn_

Пользователь

Регистрация: 20.12.2021

Сообщения: 389

Рейтинг: 48

Нарушения: 100

Aragorn_

Регистрация: 20.12.2021

Сообщения: 389

Рейтинг: 48

Нарушения: 100

AMDkrolyan сказал(а):

ну по твоему код который вставляет дупликаты типо ок ?

 

даже если условно будет в риал тайм прилетать по 100 объектов в запросе, не логичнее их сначала фильтрануть на уникальность, а потом только передать на сохранение, а не пихать эту логику в ентити

Нажмите, чтобы раскрыть...

Какой код вставляет дубликаты? Тебе приходит json

{["1", "2", "2"]} условно, ты от этого не защищен

 

Так ты это фильтранешь точно так же - создаешь в дто HashSet и на этом твоя фильтрация закончена. Только потом с твоей логикой может что-либо случиться в сервисах, и записаться лишнее в БД. Ты пишешь код не сам, какой-то дурачек напишет логику, где будут дубликаты, что дальше?)

AMDkrolyan

Пользователь

Регистрация: 21.04.2013

Сообщения: 7662

Рейтинг: 2908

Нарушения: 10

AMDkrolyan

Регистрация: 21.04.2013

Сообщения: 7662

Рейтинг: 2908

Нарушения: 10

Aragorn_ сказал(а):

Какой код вставляет дубликаты? Тебе приходит json

{["1", "2", "2"]} условно, ты от этого не защищен

 

Так ты это фильтранешь точно так же - создаешь в дто HashSet и на этом твоя фильтрация закончена. Только потом с твоей логикой может что-либо случиться в сервисах, и записаться лишнее в БД. Ты пишешь код не сам, какой-то дурачек напишет логику, где будут дубликаты, что дальше?)

Нажмите, чтобы раскрыть...

ну во-первых код ревью, я хз как можно код писать, если где-то кто-то натупит, то это бага и фиксится на месте, а не допольнительной фильтрацией

 

так тебе не обязательно держать в entity set 

Aragorn_

Пользователь

Регистрация: 20.12.2021

Сообщения: 389

Рейтинг: 48

Нарушения: 100

Aragorn_

Регистрация: 20.12.2021

Сообщения: 389

Рейтинг: 48

Нарушения: 100

AMDkrolyan сказал(а):

ну во-первых код ревью, я хз как можно код писать, если где-то кто-то натупит, то это бага и фиксится на месте, а не допольнительной фильтрацией

 

так тебе не обязательно держать в entity set 

Нажмите, чтобы раскрыть...

Что такое код ревью, когда у тебя допустим 5 команд работает над 20ью репозиториями? В каждой из которых условно 3 из 4 это джуны, а пул реквестов миллион, и никто не вникает в твои пулл реквесты на супер уровне, чтобы определить "как можно было лучше"... 

А что если ты работаешь в солянова над модулем в проекте и тебя вообще дай бог кто-то проревьювает? Дада, и такое бывает.

Как происходит код ревью 90% челиков:

- компилится ✓

- проходят тесты/чекстайлы ✓

- глянуть на банальные вещи по типу импорты, оформление кода ✓

- заметить какой-то суперочевидный говнокод ✓

Ну и хватит

 

И потом ты открываешь код и видишь как подобный челик пишет метод getCandies(), который открываешь, а там что-то на подобии

getCandies(){

//some code

 

candiesRepo.saveAll(candies);

return updatedCandies;

}

Пример вчерашней давности есь чеSeemsGood.png?1616514666

Ты думаешь его не ревьювали? Пффф.

И такое чудо ты встретишь почти в любом проекте.