2022-12-05 08:01:15
Страшно противоречить закону Деметры, но вот эта конкретная ката - точно ли нуждается в рефакторинге?
Может я слишком люблю разделять данные и функции, но по-моему чистые модельки с геттерами - Item, Inventory, Equipment, Stats, Armor, Damage, Buff - смотрятся хорошо. А добавлять в них метод GetDamage() - только уродовать.
Я бы вынес Equipment из Inventory, а функцию CalculateDamage утащил бы в какой-нибудь статический хелпер, чтобы сделать из класса Player чистую модельку. И то это вкусовщина, а остальное я бы не трогал.
Да, можно забыть поменять CalculateDamage и остальные функции, когда мы добавим новый айтем в Equipment, но тесты для того и нужны, чтобы это отследить. Я предпочту добавить комментарий в каждый из этих классов с сообщением о том, что при добавлении новых пропертей нужно не забыть чекнуть функции из хелпера, чем засуну функцию CalculateDamage в Equipment.
#codestyle #comment
124 views05:01