У меня есть большой абстрактный класс, который обрабатывает оружие в моей игре. Боевые циклы через список основных функций:
OnBeforeSwing
OnSwing
OnHit || OnMiss
Я имею в виду, что все расчеты, связанные с боевым уроном, переносятся в другую папку, которая обрабатывает именно это. Боевые расчеты, связанные с уроном.
Мне было интересно, будет ли правильным сделать это, сделав метод OnHit
расширением, или каков будет лучший подход для достижения этой цели.
Также. Периодически появляются части кода OnHit, которые модифицируются, формула урона от ударов велика, потому что она учитывает множество условий, таких как сопротивления, заклинания трансформации, бонусы предметов, специальные свойства и другие, подобные, игровые элементы.
Это заканчивается 500-строчной функцией OnHit, которая ужасает меня. Даже с региональными директивами довольно трудно пройти через них, не заблудившись в лабиринте и даже не отвлекая себя.
Если бы я расширял оружие с помощью этой функции, а не просто включил функцию OnHit, я мог бы попытаться разделить различные части атаки на другие функции.
Опять же, возможно, я мог бы сделать это, вызвав что-то вроде CombatSystem.HandleWeaponHit
из OnHit в классе оружия, и не использовать методы расширения. Это может быть более подходящим.
По сути, мой вопрос заключается в том, если оставить это как действительно лучшее решение, или я могу (должен?) Переместить эту часть кода в метод расширения или отдельный вспомогательный класс, который обрабатывает модель повреждения, и могу ли я следует попытаться разделить функцию на меньшие функции «задачи», чтобы улучшить читаемость.