Size: a a a

Programming Offtop

2020 March 16

U

Unat in Programming Offtop
У нас на остановках постоянно маршруткам зигуют
источник

U

Unat in Programming Offtop
(
или это было не римское приветствие?
Рим пал, центурион
источник

KD

Konstantin Dovnar in Programming Offtop
Чот сейчас призадумался и понял, что не могу понять, как лучше это сделать и почему:

Есть у нас какой-то дата сурс\репозиторий, в нём нужна возможность сохранять новые сущности. Например, юзеров. У юзеров определённая моделька, пусть
 data class User(val id: Long, val name: String)


И вот я думаю, как лучше создавать их? Передавая в метод создания уже готовый объект User и игнорить поле id (потому что оно будет заполняться потом при сохранении) или же передавать аргументами нужные для создания поля и уже на стороне дата сорса работать с ними?
источник

KD

Konstantin Dovnar in Programming Offtop
источник

(

( in Programming Offtop
Konstantin Dovnar
Чот сейчас призадумался и понял, что не могу понять, как лучше это сделать и почему:

Есть у нас какой-то дата сурс\репозиторий, в нём нужна возможность сохранять новые сущности. Например, юзеров. У юзеров определённая моделька, пусть
 data class User(val id: Long, val name: String)


И вот я думаю, как лучше создавать их? Передавая в метод создания уже готовый объект User и игнорить поле id (потому что оно будет заполняться потом при сохранении) или же передавать аргументами нужные для создания поля и уже на стороне дата сорса работать с ними?
пильнуть отдельную модельку CreateUser?
источник

A

Andrey in Programming Offtop
Модель на запись сделай, или дырок понаделай
источник

A

Andrey in Programming Offtop
Переслано от Oleg ℕizhnik
Одно из стандартных названий https://reasonablypolymorphic.com/blog/higher-kinded-data/
источник

A

Andrey in Programming Offtop
Переслано от Oleg ℕizhnik
Короче делаешь
final case class GMessage[F[_]](
  id: F[Id]
 foo: Foo,
 bar: F[Bar],
 baz: Baz
)


object GMessage{
 type Message  = GMessage[Id]
 type MessageInput = GMessage[Option]

 implicit val inputDecoder: Decoder[MessageInput] = deriveDecoder
}
источник

A

Andrey in Programming Offtop
Второе шутка, лучше просто модель на запись
источник

KD

Konstantin Dovnar in Programming Offtop
(
пильнуть отдельную модельку CreateUser?
Думал об этом варианте, но только чтобы игнорировать id создавать отдельную модельку — стрёмно как-то.
источник

A

Andrey in Programming Offtop
Намана
источник

(

( in Programming Offtop
Konstantin Dovnar
Думал об этом варианте, но только чтобы игнорировать id создавать отдельную модельку — стрёмно как-то.
в противном случае получается богомерзкий паттерн, которым пользуются всякие ОРМы с Entity, у которых поля опционально пустые, а никого и не парит
источник

(

( in Programming Offtop
Не знаю, как другие к этому относятся, имха, это пиздос
источник

KD

Konstantin Dovnar in Programming Offtop
(
в противном случае получается богомерзкий паттерн, которым пользуются всякие ОРМы с Entity, у которых поля опционально пустые, а никого и не парит
Это, конечно, пиздец, спору нет.
Но так будет уже две модельки за которыми следить и у которых различие на одно поле.
источник

KD

Konstantin Dovnar in Programming Offtop
Выходит, шо то гавно, шо это
источник

(

( in Programming Offtop
Konstantin Dovnar
Это, конечно, пиздец, спору нет.
Но так будет уже две модельки за которыми следить и у которых различие на одно поле.
нет, получается CQS
источник

KD

Konstantin Dovnar in Programming Offtop
Andrey
Модель на запись сделай, или дырок понаделай
А что за дырки?
источник

A

Andrey in Programming Offtop
Так я кинул пример же
источник

A

Andrey in Programming Offtop
Да это хуйня забей
источник

DS

Doge Shibu in Programming Offtop
Andrey
Да это хуйня забей
Норм работает на практике, позволяет кучу кода сэкономить в сложных случаях. Но в котлине не сработает, само собой.
источник