Size: a a a

2018 April 03

PK

Pavel Khritonenko in fprog_spb
На самом деле это боль моя.
источник

AP

Aleksei (astynax) Pirogov in fprog_spb
Не буду умничать - выгонят из сеньоров же
источник

AP

Aleksei (astynax) Pirogov in fprog_spb
Да и паттернокниги говорят - "композируй, а не наследуйся"
источник

PK

Pavel Khritonenko in fprog_spb
Джун бы давно скопипастил и сделал, а ты тут про удобно.
источник

AP

Aleksei (astynax) Pirogov in fprog_spb
Скопипастить - часто неплохо.
источник

AP

Aleksei (astynax) Pirogov in fprog_spb
А то Драй-до-дыр получается иногда. В эти дыры абстракция и утекает
источник

PK

Pavel Khritonenko in fprog_spb
Я что сказать хотел - у меня сейчас в проекте такая херь. Наследование во все поля. «Просто унаследуйся и перепиши».
источник

PK

Pavel Khritonenko in fprog_spb
Я как сел посмотреть, сразу леща дать захотелось.
источник

AP

Aleksei (astynax) Pirogov in fprog_spb
"Просто унаследуйся и перепиши" - с этого всё и начинается
источник

n

neFormal in fprog_spb
Aleksei (astynax) Pirogov
ECS выше упоминали (автор требований и упоминал!). Она удовлетворяет требованиям. На ФП-языках реализуется вполне
ECS всего лишь позволит разделить два интерфейса
а вот наследовать поведение придётся и в ней
источник

AP

Aleksei (astynax) Pirogov in fprog_spb
ПФФ. Поведение композится из функций, которые с энтитями работают
источник

AP

Aleksei (astynax) Pirogov in fprog_spb
ФП же - композишь функции и усё
источник

AP

Aleksei (astynax) Pirogov in fprog_spb
У меня есть мнение, что упомянутая задача вполне решается без ООП или как минимум без наследования, но доказывать что-то кому то я не хочу :)
источник

PK

Pavel Khritonenko in fprog_spb
источник

IZ

Ilia Zviagin in fprog_spb
Aleksei (astynax) Pirogov
У меня есть мнение, что упомянутая задача вполне решается без ООП или как минимум без наследования, но доказывать что-то кому то я не хочу :)
А почему надо что-то решать БЕЗ ООП?
ООП же полностью ортогонально  FP.
Наследование наследованием, оно ничего не мешает делать с функциями.

Хотя я задачу не знаю, это чисто так, мысли...
источник

JC

John Cantrell in fprog_spb
Aleksei (astynax) Pirogov
А то Драй-до-дыр получается иногда. В эти дыры абстракция и утекает
Опять у хаскелистов типы не налезли, пришлось отшучиваться
источник

Вл

В ладу in fprog_spb
Ilia Zviagin
А почему надо что-то решать БЕЗ ООП?
ООП же полностью ортогонально  FP.
Наследование наследованием, оно ничего не мешает делать с функциями.

Хотя я задачу не знаю, это чисто так, мысли...
То есть все таки НАДО наследоваться?
источник

PK

Pavel Khritonenko in fprog_spb
Конечно надо.
источник

PK

Pavel Khritonenko in fprog_spb
источник

AV

Alexander Vershilov in fprog_spb
@ne_formal я бы делал:
data World = World [Object] Player
data WObject = WObject Graphics Object
data Object = ObjectBullet Bullet | ObjectEnemy
data ObjectBullet = Bullet Damage Velocity
data ObjectEnemy = Helicopter | Paratrooper
data Weapon
 = Pistol
 | MachineGun
 | Modified Mod Weapon
data Mod = ModAmplifier Double | ModTripple

render :: WObject -> IO ()
fire :: Weapon -> [Object]
collision :: [Object] -> ([(Object, Object)],[Object])
-- или
move :: [Object] -> (Event Object)


тут всякие вопросы про то где держать графику наверху или в каждом объекте и предоставить линзы,
смысл в ФП обычно поведение отделено от данных, и получается но код тут тоже будет переиспользоваться.
Есть минус - такой подход приведет к закрытому множеству оружий и всего такого, плагины к игре не поделаешь.
Если нужно открытый мир, то там экзестенциальные типы и выделение интерфейсов.
источник