Это зависит. На самом деле существует 2 типа статических методов:
- Статические методы, потому что они МОГУТ быть
- Статические методы, потому что они ДОЛЖНЫ быть
В кодовой базе малого и среднего размера вы действительно можете рассматривать два метода как взаимозаменяемые.
Если у вас есть метод, относящийся к первой категории (может быть-статическим), и вам нужно изменить его для доступа к состоянию класса, довольно просто выяснить, можно ли превратить статический метод в метод экземпляра.
Однако в большой базе кода огромное количество сайтов вызова может сделать поиск, чтобы увидеть, возможно ли преобразовать статический метод в нестатический слишком дорогостоящим. Много раз люди увидят количество звонков и скажут: «Хорошо ... Мне лучше не менять этот метод, а вместо этого создать новый, который будет делать то, что мне нужно».
Это может привести к:
- Много дублирования кода
- Резкий рост количества аргументов метода
Обе эти вещи плохи.
Итак, я бы посоветовал, если у вас есть кодовая база более 200K LOC, я бы делал методы статическими только в том случае, если они должны быть статическими.
Рефакторинг от нестатического к статическому относительно легко (просто добавьте ключевое слово), поэтому, если вы хотите позже превратить статический статический в фактический статический (когда вам понадобится его функциональность вне экземпляра), вы можете. Однако обратный рефакторинг, превращающий статический метод в метод экземпляра, НАМНОГО дороже.
При больших базах кода лучше делать ошибки из-за простоты расширения, а не из-за идеологической чистоты.
Итак, для больших проектов не делайте вещи статичными, если они вам не нужны. Для небольших проектов просто делайте то, что вам больше нравится.