Size: a a a

Programming Offtop

2021 March 16

АХ

Алексей Худяков... in Programming Offtop
Anton Korotkikh
на тебе пример логической ошибки. как ты будешь ловить это типами

1. пришёл агент
2. залил какого-то своего говна в коллектор
3. отцепился
4. коллектор не закрывает сокет (логично, что его, блеать надо закрыть или переиспользовать)
5. спустя примерно 65к заливок, коллектор умирает, т.к. закончились сокеты

собственно тут ошибка - ты или закрывай соединение, либо переиспользуй его. но кодер обосрамс и просто не поудмал об этом. и кто его по рукам теперь шелпнёт, кроме нагрузочных тестов или уже инцидента на проде? типы?
Linear types to the resque! Созданный сокет должен быть использован, т.е. закрыт
источник

I

Ilmir in Programming Offtop
(
Это я улучшаю себе жизнь, пока пишу на котлине
Почему всё одинаковое?
источник

AK

Anton Korotkikh in Programming Offtop
Алексей Худяков
Linear types to the resque! Созданный сокет должен быть использован, т.е. закрыт
т.е. можно создать такой тип, что компулятор набычит на юзера на тему "эээ, где вызов close, дядя?"
источник

Kd

Konstantin dmz9 in Programming Offtop
скорее линтом, в иде варнинги есть
источник

(

( in Programming Offtop
Alexander Nozik
Почему взрыв-то?

```
data class MyEntity( val a: A, val b: B){
 companion object: EntityFactory< MyEntity>{
   override fun buildEntity(heap: Heap)  = MyEntity(heap.get<A>(), heap.get<B>())
 }
}
А у MyEntity ещё женерики, я правильно понял? И методы типа getFirstComponent(): A, getSecondComponent(): B и т. д.?
источник

AN

Alexander Nozik in Programming Offtop
(
А у MyEntity ещё женерики, я правильно понял? И методы типа getFirstComponent(): A, getSecondComponent(): B и т. д.?
оно уже data сlass, там все есть
источник

(

( in Programming Offtop
Alexander Nozik
оно уже data сlass, там все есть
Да, да. Но A и B женеричные
источник

АХ

Алексей Худяков... in Programming Offtop
Anton Korotkikh
т.е. можно создать такой тип, что компулятор набычит на юзера на тему "эээ, где вызов close, дядя?"
Можно. Но мало где есть. Мало в смысле мало где во всяких маргинальных и исследовательских языках
источник

(

( in Programming Offtop
И получаются как бы туплы
источник

AN

Alexander Nozik in Programming Offtop
(
Да, да. Но A и B женеричные
Зачем? Они там конкретные
источник

(

( in Programming Offtop
а
источник

(

( in Programming Offtop
А зачем?
источник

(

( in Programming Offtop
А, ладно
источник

AN

Alexander Nozik in Programming Offtop
На каждый финальный тип делаешь типа + фабрику. Я согласен, что это некоторая дубликация. но это полностью заменяет то, о чем ты говорил выше.
источник

AN

Alexander Nozik in Programming Offtop
(
А зачем?
Ну можно часть сделать дженеричными, если хочется.
источник

(

( in Programming Offtop
Ну нет, комбинаторный взрыв будет. Плюс в ентити в течение её жизни ещё можно добавлять и убирать компоненты
источник

AN

Alexander Nozik in Programming Offtop
(
Ну нет, комбинаторный взрыв будет. Плюс в ентити в течение её жизни ещё можно добавлять и убирать компоненты
Этого в ТЗ не было. А комбинаторного взрыва нет. Там сколько конечных типов, столько и фабрик
источник

AK

Anton Korotkikh in Programming Offtop
Алексей Худяков
Можно. Но мало где есть. Мало в смысле мало где во всяких маргинальных и исследовательских языках
ух бля, прикольно
источник

AN

Alexander Nozik in Programming Offtop
Алексей Худяков
Можно. Но мало где есть. Мало в смысле мало где во всяких маргинальных и исследовательских языках
Угу, проще взять use
источник

(

( in Programming Offtop
Alexander Nozik
Этого в ТЗ не было. А комбинаторного взрыва нет. Там сколько конечных типов, столько и фабрик
Ну так конечные типы - это различные сочетания существующих компонентов. Неприятно
источник