Java делает методы статичными, когда это возможно, хорошая практика? - PullRequest
3 голосов
/ 19 ноября 2011

Я настроил свой компилятор так, чтобы он предупреждал меня о методах, которые можно сделать статическими.

Эти методы в основном являются помощниками для выполнения вычислений, установки атрибутов для переданных объектов и т. Д.

СледуетЯ делаю их статичными, или это признак того, что мой стиль кодирования - город (CN)?

Ответы [ 4 ]

5 голосов
/ 19 ноября 2011

Остерегайтесь использования статических методов для вещей, которые вы хотели бы абстрагировать позже.Статические методы не поддерживают смену реализаций, поскольку имеют жесткую связь между потребляющим классом и классом реализации.

При этом я думаю, что есть еще места, где статические методы подходят (классы утилит).

2 голосов
/ 19 ноября 2011

Обычно служебные методы и другие вещи, принадлежащие классу, должны быть статическими. Столкнувшись с методом, который не обращается к состоянию экземпляра, вы должны спросить себя, могут ли подклассы разумно переопределить метод, обеспечивающий реализацию, зависящую от состояния, прежде чем вы сделаете его статичным.

1 голос
/ 19 ноября 2011

Хорошей практикой может быть статический метод, поскольку вы знаете, что статическому методу не нужен доступ к каким-либо данным экземпляра.По этой причине он также имеет небольшой прирост производительности.

1 голос
/ 19 ноября 2011

Все служебные классы без сохранения состояния должны быть статическими.Гуру, поправьте меня, если я ошибаюсь: статические методы без сохранения состояния (без использования глобальных / статических переменных) являются потокобезопасными!

...