Показать сообщение отдельно
Старый 19.04.2015, 17:32   #11
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Вопрос по архитектуре

Сообщение от Samodelkin Посмотреть сообщение
Конечно код сортировки можно вставить куда угодно. Но если ты строго следуешь концепции ООП где всё должно быть разложено по полочкам то сцена и сортировщик вещи разные. Сцена это скорее не объект, а форма доступа к данным, просто в ООП всё называется объектами. Информацию об иерархии и отношениях между объектами сцены лучше хранить отдельно от самих объектов сцены. А сами объекты сцены должны содержать только то что требуется для рендера. Таким образом сцена делает надстройку (информационную и функциональную) над объектами сцены для возможности работать с ними с точки зрения взаимодействия пользователя со сценой. Но во время рендера эти надстройки убираются и остается сырой материал для максимально быстрого его вывода на экран. Так что формально сортировщик наверное должен находится где-то посередине и не относиться ни к сцене ни к рендеру. Потому что вот например фрустум или октри относятся к сцене, а сортировщик больше основывается на машинном представлении данных и относится скорее к менеджеру памяти или ресурсов.
Я думаю не стоит мне разъяснять, что такое ООП. Я на данный момент ведущий-инженер программист одной крупной компании в сфере ритейла.
С опытом становится понятно, что ООП - это лишь средство для достижения цели. И не нужно городить ООП ради ООП. Тут нужно понимать, если твой код после внедрения фичи становится сложно читаемым и неразборчивым, выдели отдельный объект. Иначе нехер этого делать. Тоже касается и дублирования кода. Любую проблему можно решить миллиардами ООП способами. Тебе никто не мешает осуществить Mix-in, или например предположить, что все дочерние сцены будут иметь одинаковый метод сортировки, тогда сортировку можно реализовать в базовом классе. Нужно понимать, что ты хочешь, и просто делать это, ооп получится само с собой, когда ты начнешь понимать основные принципы.
(Offline)
 
Ответить с цитированием