Показать сообщение отдельно
Старый 20.06.2018, 16:35
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 1  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
По умолчанию Проблема "раздутого" класса

Друзья, поделитесь опытом.

У меня по мере разработки игры слишком разросся класс Character. Причём если смотреть на него с т.з. ООП, то вроде всё на месте. Есть штук 25 постоянных и неизменных на протяжении всей игры свойств, ещё штук 20 изменяемых параметров, описывающих текущее состояние, полтора десятка умений, что-то ещё по мелочам. Вся ботва с сеттерами/геттерами - это уже около 700 строк кода. Дальше идут методы. Их много, т.к. много чего должно рассчитываться для персонажа, в том числе по-своему в зависимости от наследника Character. Так что особо не уберёшь никуда.

Таким образом, даже реализовав менеджер экипировки и менеджер статус-эффектов как отдельные классы, всё равно кол-во строк зашкалило за 1500. Работать с такой громадиной становится затруднительно. Как решаются подобные ситуации?

Единственное, что пока приходит в голову, это сделать отдельный класс CharacterData для неизменных "справочных" значений и передавать в конструктор каждого экземпляра Character. Но всё равно будет геморрой с созданием наследников CharacterData, плюс в самом Character не обойтись без записей записей типа:

Код AS3:
public function get intelligence() : Number {return _data.intelligence}
Поэтому эффективность такого решения остаётся под вопросом.
__________________
Не сломано - не чини!