Нужно ли избавляться от менеджеров-классов при написании классов в UNITY 3D?

Я сейчас пишу игры на c# в UNITY, и мне хотелось бы узнать, как лучше создавать классы.

Насколько я понимаю класс - это сущность из реального мира, перенесённая в код, у которой есть функции и тд.

Например, я создал класс TimeManager, в котором есть функции получения текущего множителя времени (от 0 до 1) и функция, позволяющая задать множитель времени (тоже от 0 до 1, используя Mathf.clamp).

Я использую этот класс для того, чтобы замедлять объекты в сцене. Грубо говоря я пилю клон SUPERHOT, где контролирую каждый объект и его velocity.

Мне бы хотелось узнать, как бы записали такой класс крутые программисты.

Если вопрос глупый, то не обессудьте, только на 2 курсе.


Ответы (1 шт):

Автор решения: Yaroslav

Класс это не сущность от реального мира, а набор полей и методов, то есть информации и операций над ней. Классы могут быть абстрактными и совсем не реальными.

Какими должны быть классы и в принципе все, описано в пяти принципах SOLID. Начинать нужно с Single Responsibility Principle, closed Principle (open потом), и форматировать код согласно общепринятым конвенция языка.

Один из основных навыков, это навык нейминга (именования) классов, полей и методов, чему посвящают весомую долю страниц в книгах о программировании. Если класс называется xxxManager или xxxController, то ты сам не понимаешь чем он вообще занимается, но это что-то точно связано с xxx. TimeManager не чем явно не заведует и не управляет, а является статической точной доступа к множителю времени, то есть TimeMultiplayer.value.

Если бы ты тупо Ok Google: Unity3d game speed, сразу бы узнал, что такой класс в Unity3D уже есть и меняет скорость игры Time.timeScale. Только не говори, что Google проходят на 3ем курсе.

→ Ссылка