Я только что прочитал эту статью здесь: http://hamletdarcy.blogspot.com/2008/04/10-best-idea-inspections-youre-not.html,, и последний бит, в частности, заставил меня задуматься о моем коде, в частности, совет:
Что в мире являетсяпубличный метод делает на вашем объекте, который не зависит от каких-либо полей в объекте?Это, конечно, запах кода.Проблема в том, что «авто-исправление» для проверки заключается в применении статического ключевого слова.Нееет.Это не то, что вы хотите сделать.Публичный метод без какой-либо зависимости от состояния объекта не может быть частью объекта, который имеет однозначно заданный устав.Это просто не связно и должно быть размещено где-то еще.Итак: если метод является закрытым, примите автоматическое исправление, но если метод является общедоступным, не делайте этого.
Код, по сути, является преобразователем объекта.Он берет объект типа A и преобразует его в другой тип.
Моя иерархия выглядит следующим образом:
Интерфейс ObjectTransformer -> GenericObjectTransformer
, а затем ниже этого, GenericObjectTransformerрасширяется ObjectTransformerA и ObjectTransformerB
Теперь некоторые функции требуются как ObjectTransformerA, так и ObjectTransformerB, но на самом деле не зависят ни от каких переменных экземпляра GenericObjectTransformer, поэтому это защищенный статический метод в GenericObjectTransformer.
Это нарушение вышеуказанного правила?Очевидно, что это защищенный, а не общедоступный, но все же это метод, доступный извне класса, который не имеет ничего общего с самим классом?
Есть мысли?