Size: a a a

Unity Floodилка

2020 August 31

SP

Shura Proger in Unity Floodилка
источник

SP

Shura Proger in Unity Floodилка
источник

DV

Danila Vanilla in Unity Floodилка
если у тебя в пуле нету объектов, то что будешь делать, и избавься от GetComponent
источник

SP

Shura Proger in Unity Floodилка
Danila Vanilla
если у тебя в пуле нету объектов, то что будешь делать, и избавься от GetComponent
Понял, надо сделать проверку, понять бы где.

А вот как мне от ГетКомпонента избавиться? Если это интерфейс метод которого мне нужен
источник

PU

PSAWS U in Unity Floodилка
Shura Proger
Понял, надо сделать проверку, понять бы где.

А вот как мне от ГетКомпонента избавиться? Если это интерфейс метод которого мне нужен
никак
источник

PU

PSAWS U in Unity Floodилка
:D
источник

ws

wano snegirееv in Unity Floodилка
Shura Proger
1. Синглтон нарушает SRP (Single Responsibility Principle) — класс синглтона, помимо того чтобы выполнять свои непосредственные обязанности, занимается еще и контролированием количества своих экземпляров.

2. Глобальное состояние. Про вред глобальных переменных вроде бы уже все знают, но тут та же самая проблема. Когда мы получаем доступ к экземпляру класса, мы не знаем текущее состояние этого класса, и кто и когда его менял, и это состояние может быть вовсе не таким, как ожидается. Иными словами, корректность работы с синглтоном зависит от порядка обращений к нему, что вызывает неявную зависимость подсистем друг от друга и, как следствие, серьезно усложняет разработку.

3. Зависимость обычного класса от синглтона не видна в публичном контракте класса. Так как обычно экземпляр синглтона не передается в параметрах метода, а получается напрямую, через GetInstance(), то для выявления зависимости класса от синглтона надо залезть в тело каждого метода — просто просмотреть публичный контракт объекта недостаточно.

4. Наличие синглтона понижает тестируемость приложения в целом и классов, которые используют синглтон, в частности. Во-первых, вместо синглтона нельзя подпихнуть Mock-объект, а во-вторых, если синглтон имеет интерфейс для изменения своего состояния, то тесты начинают зависеть друг от друга. Говоря же проще — синглтон повышает связность, и все вышеперечисленное, в том или ином виде, есть следствие повышения связности.

Естественно, можно акккуратненько пройти по граблям и использовать синглетон, но (цитата из доки к пикоконтейнеру) "Overuse makes for bad solutions. At the enterprise level, it makes for very very bad solutions"...

Тем более, что при тщательном рассмотрении вопроса, использования синглтона, как правило, можно легко избежать. А если можно легко избежать, значит это нужно сделать, чтобы удержать себя от излишнего соблазна "оверюза"... Например, для контроля количества экземпляров объекта вполне можно (и нужно) использовать различного рода фабрики.

Наибольшая же опасность, как было сказано, подстерегает при попытке построить на основе сиглтонов всю архитектуру приложения, такому подходу существует масса замечательных альтернатив. Например, IoC контейнеры — там проблема контроля создания сервисов решается естественным образом, так как они, по сути, являются "фабриками на стероидах" =). Другой альтернативой являются Service Locator-ы, из известных вариантов этого подхода — паттерн IServiceProvider.
синглтон нужен тогда, когда необходимо гарантирование единственного экземпляра данных.

Собственно, "минусы" исходят именно из этого назначения.
источник

ws

wano snegirееv in Unity Floodилка
Shura Proger
Понял, надо сделать проверку, понять бы где.

А вот как мне от ГетКомпонента избавиться? Если это интерфейс метод которого мне нужен
главное, чтобы он не был в Update'e)
источник

ws

wano snegirееv in Unity Floodилка
wano snegirееv
главное, чтобы он не был в Update'e)
В смысле - не дёргался каждый апдейт
источник

SP

Shura Proger in Unity Floodилка
wano snegirееv
главное, чтобы он не был в Update'e)
Нууу, он не в апдейте, но вызывается всё равно часто, считай каждый раз, когда спавнится площадка, а это происходит +- каждую секунду
источник

SP

Shura Proger in Unity Floodилка
Хотя не 400 раз в секунду, уже хорошо я щитаю
источник

ws

wano snegirееv in Unity Floodилка
Shura Proger
Нууу, он не в апдейте, но вызывается всё равно часто, считай каждый раз, когда спавнится площадка, а это происходит +- каждую секунду
м...
а нельзя это как-то в пул забрать и инстансить?
источник

sb

straight busta in Unity Floodилка
опять синглтон обсуждаете
источник

sb

straight busta in Unity Floodилка
ну синглтон он такой, парень свободный
источник

sb

straight busta in Unity Floodилка
кто понял шутку тому пирожок с полки
источник

SP

Shura Proger in Unity Floodилка
У меня от этого интерфейса наследуются все площадки и при каждом появлении они мне отправляют координаты точек на себе, которые мне нужны
источник

ws

wano snegirееv in Unity Floodилка
Shura Proger
У меня от этого интерфейса наследуются все площадки и при каждом появлении они мне отправляют координаты точек на себе, которые мне нужны
сколько жрёт быстродействия?
источник

SP

Shura Proger in Unity Floodилка
wano snegirееv
сколько жрёт быстродействия?
Я не заметил
источник

ws

wano snegirееv in Unity Floodилка
Shura Proger
Я не заметил
профайлером глянь
источник

ws

wano snegirееv in Unity Floodилка
короче если меньше критичного уровня - забей пока, просто сделай релиз
источник