Size: a a a

🎄.NET Talks: Evergreen🎄

2019 December 09

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
Vabka
Мне кажется тут какая-то странная архитектура. Можешь конктный пример дать? Может тебе не наследованием это решить, а композицией интерфейсов?
есть 10 видов шумов (noise)

некоторые шумы могут быть интерполированы линейно, ещё как-то и ещё как-то
некоторые могут иметь returnMode (описывает по какому алгоритму будет возвращаться результат)
некоторые могут быть деформированы градиентом
некоторые могут быть фрактальными или простыми
а некоторые могут не иметь всё выше написаное или иметь по 2-4 свойства
источник

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
но при этом нужны шумы наследуемые
чтобы была возможность изменять параметры прям в цикле массиву шумов без проверки на его тип
источник

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
сейчас сделал так
что каждый наследуемый класс (тип шума) имеет все свойства.
в тех классах что свойства не имеют значения - они obsolete
источник

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
чтобы дать понять программисту что конкретно на такой шум не влияет свойство N
источник

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
то есть каждое свойство реализовано в базовом классе
от базового класса наследуются все типы шумов и там же (в наследуемым конкретно по типу шума) происходит их вычисление
источник

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
сейчас у меня иерархия такая:
Noise (все свойства всех шумов)
- NoiseType1 (реализация шума и его вычисления)
- NoiseType2 (реализация шума и его вычисления)
- ...
- NoiseType10 (реализация шума и его вычисления)
источник

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
не думаю что нужно выделять свойство в какой-то наследуемый класс от которого наследуются зависимые от него шумы
(не удобно для цикла чтобы всем шумам менять свойства + программист не поймёт какой тип шума относится к какому базовому который описывает общие алгоритмы для дочерних шумов)
источник

V

Vabka in 🎄.NET Talks: Evergreen🎄
Интерфейс можно использовать
источник

V

Vabka in 🎄.NET Talks: Evergreen🎄
Не знаю что такое фрактальный и "с пертурбацией" но почему бы не разделить на интерфейсы типа "шум", "фрактальный шум" итд
источник

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
можно
а описывать алгоритмы свойст нужно будет в каждом классе где есть интерфейс?
или в интерфейсе прям можно описать метод и параметры?
источник

V

Vabka in 🎄.NET Talks: Evergreen🎄
А параметризовывать через какой-нибудь NoiseFactory (а сами шумы оставить иммутаьельными)
источник

V

Vabka in 🎄.NET Talks: Evergreen🎄
Ιεζεκιήλ
можно
а описывать алгоритмы свойст нужно будет в каждом классе где есть интерфейс?
или в интерфейсе прям можно описать метод и параметры?
В интерфейсе описываешь сигнатуру метода
источник

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
в том и дело
что только сигнатуру)
везде дублировать придётся код
источник

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
(тело метода)
источник

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
как у меня сейчас
источник

V

Vabka in 🎄.NET Talks: Evergreen🎄
Если несколько шумов имеют какое-то общее поведение, то выносишь его в один класс и наследуешь его, либо композируешь
источник

V

Vabka in 🎄.NET Talks: Evergreen🎄
Vabka
Если несколько шумов имеют какое-то общее поведение, то выносишь его в один класс и наследуешь его, либо композируешь
Композируешь, если есть несколько общих поведений, которые не всегда вместе
источник

Ι

Ιεζεκιήλ in 🎄.NET Talks: Evergreen🎄
а композировать = класс + интерфейсы от которого наследуются другие классы?
источник

V

Vabka in 🎄.NET Talks: Evergreen🎄
Ιεζεκιήλ
а композировать = класс + интерфейсы от которого наследуются другие классы?
Не понял
источник

V

Vabka in 🎄.NET Talks: Evergreen🎄
А. Я не так выразился
источник