Ну, начнем с размышления о том, какие биты данных объединяются естественным образом. Например, если у вас есть имя игрока, его рейтинг, позиция, количество жизней и т. Д., Это может означать, что у вас должен быть класс Player
. Итак, взгляните на все состояния, разбейте его на разные группы, а затем проверьте, какие из существующих методов работают только с той или иной группой состояний ... и поместите методы с состоянием, в котором они заинтересованы.
Конечно, становится сложнее, когда одному методу нужно иметь дело с состоянием из нескольких объектов: обычно это означает, что вы поместите код в один тип и передадите другой тип в качестве параметра.
Во многом это чувство интуиции, если честно - все вышеперечисленное является лишь отправной точкой. Со временем это станет несколько проще, и вы, вероятно, начнете думать больше с точки зрения обязанностей , чем просто с данными - но это хорошая отправная точка, поскольку у вас, вероятно, уже есть нужные данные, просто не организованные в правильном направлении ... в то время как определение обязанностей внутри системы может быть намного сложнее.