Войти
ФлеймФорумПрограммирование

Что даёт такой стиль кода , в чем его плюсы или минусы ? (4 стр)

Страницы: 13 4 5 68 Следующая »
#45
13:36, 12 июля 2018

Kartonagnick
> попробуйте реализовать вариативный тип без union,
std::variant?


#46
14:37, 12 июля 2018

Kartonagnick

> попробуйте реализовать вариативный тип без union
Зачем нужны вариативные типы, когда архитектура прозрачна, а поведение детерминировано? Не нужны они совсем.
Вот когда у тебя "орхетектура", то разумеется без вариативных типов данных не обойтись.
А без универсальных детекторов членов вообще никуда.

#47
14:43, 12 июля 2018

Ghost2
> Зачем нужны вариативные типы, когда архитектура прозрачна, а поведение
> детерминировано? Не нужны они совсем.
> Вот когда у тебя "орхетектура", то разумеется без вариативных типов данных не
> обойтись.
Предложи хорошую замену. Кейс: хранить произвольные метаданные для игрового ресурса. Чтоб потом в любом месте игровой логики просто взять и сделать resource.GetMetadata("key")

#48
14:47, 12 июля 2018
Ghost2
> А без универсальных детекторов членов вообще никуда.
Серьезный топик, между прочим
https://www.eurogamer.net/articles/2015-06-01-lego-mmo-developmen… tion-software
#49
15:00, 12 июля 2018

Eugene

> Предложи хорошую замену
Базовый класс meta_t и визиторы.

#50
15:01, 12 июля 2018

Ghost2
> Базовый класс meta_t и визиторы.
Хм.. Не до конца понимаю.
Хранить каждую запись метаданных в виртуальном классе?

#51
15:07, 12 июля 2018

Eugene
> Хранить каждую запись метаданных в виртуальном классе?

сделай через жепу, окончательно все переусложнив,
лишь бы не заюзать простенький вариант.

#52
15:08, 12 июля 2018

Panzerschrek[CN]
> std::variant?
до до. можно даже рантаймовый.

#53
15:08, 12 июля 2018

Ghost2
> Зачем нужны вариативные типы, когда архитектура прозрачна, а поведение
> детерминировано?
что бы не делать через жопу со всеми этими визиторами и прочей ненужной хренью.

#54
15:26, 12 июля 2018

Eugene

> хранить произвольные метаданные для игрового ресурса
Что такое "произвольные данные"? Мне очень хочется увидеть пример таких данных.

> Хранить каждую запись метаданных в виртуальном классе?
Должен быть класс для pod'ов, где будут, собственно, pod'ы. Как раз в union.
И все остальное, если оно вообще нужно. Да, как виртуальные классы.

Kartonagnick

> что бы не делать через жопу со всеми этими визиторами и прочей ненужной хренью.
Через жопу - это когда нужен вариант. И детектор членов. Универсальный.

#55
15:29, 12 июля 2018

Ghost2
> Что такое "произвольные данные"? Мне очень хочется увидеть пример таких данных.
Число. Строка. Вектор (математический). Кватернион, матрицы. Вектор (с++). Мапа. Штук 20 типов наберется, треть не POD-ы.

#56
15:49, 12 июля 2018

Eugene

> Штук 20 типов наберется, треть не POD-ы.
Мне как раз был интересен пример не-pod'ов.

#57
15:57, 12 июля 2018

Ghost2
> Мне как раз был интересен пример не-pod'ов.
Строки, вектора, мапы. Это основное.
Да, я хранил в метаданных ресурса много разных (но специфических) вещей, потому что это удобно.
Последнее, что я использовал — мапа разнотипных векторов: вектор с векторами (float3), вектор с кватернионами, вектор со скалярами.
Со стороны кода это выглядело как VariantMap с VariantVector, каждый из которых со своим наполнением.

#58
16:16, 12 июля 2018

Eugene

> Строки, вектора, мапы. Это основное.
Если они immutable, то все это реально можно сделать pod'ами.
Если должны быть mutable, то это плохо подготовленные ресурсы.

> мапа разнотипных векторов
Под не-pod'ами я понимаю jackalope с картинки Суслика. Конкретно - нечто, имеющее полиморфное
поведение. Пока ты привел только сложные, но фиксированные на момент загрузки типы.

#59
16:25, 12 июля 2018

Ghost2
> Под не-pod'ами я понимаю jackalope с картинки Суслика
Ну извините...

> Пока ты привел только сложные, но фиксированные на момент загрузки типы.
О да, все на 100% фиксированное.
Вообще до моих изменений вариант сам был на 100% фиксированный, с набором из пары дюжин типов.
Виртуальность мне пришлось засунуть, потому что я хотел хранить в варианте произвольные типы. Не для метаданных ресурсов. В первую очередь для генерик коллекций типа behavior tree blackboard.

Страницы: 13 4 5 68 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.