Це залежить. Є дійсно 2 типи статичних методів:
- Методи, які є статичними, оскільки вони МОЖУТЬ бути
- Методи, які є статичними, оскільки вони МАЮТЬ бути
У кодовій базі невеликого та середнього розміру ви дійсно можете поводитися два способи взаємозамінно.
Якщо у вас є метод, який знаходиться в першій категорії (може бути статичним), і вам потрібно змінити його на доступ до стану класу, порівняно прямо вперед можна зрозуміти, чи можна перетворити статичний метод на метод екземпляра.
Однак у великій кодовій базі велика кількість сайтів для викликів може зробити пошук, щоб перевірити, чи можна конвертувати статичний метод у нестатичний занадто дорого. Багато разів люди побачать кількість дзвінків і скажуть "нормально ... Я краще не змінювати цей метод, а натомість створити новий, який робить те, що мені потрібно".
Це може призвести до будь-якого:
- Дублювання коду
- Вибух у кількості аргументів методу
Обидва ці речі погані.
Отже, моя порада полягатиме в тому, що якщо у вас є база коду понад 200K LOC, я би робив методи статичними лише тоді, коли вони є обов'язковими статичними методами.
Рефакторинг від нестатичного до статичного порівняно простий (просто додайте ключове слово), тому, якщо ви хочете пізніше перетворити статичну статику в фактичну статику (коли вам потрібна функціональність поза екземпляром), ви можете. Однак, зворотний рефакторинг, перетворюючи статичну статику в метод екземпляра, набагато дорожчий.
З великими базами коду краще помилятися на стороні простоти розширення, а не на стороні ідеальної чистоти.
Отже, для великих проектів не можна робити речі статичними, якщо вони вам не потрібні. Для невеликих проектів просто робіть те, що вам найбільше подобається.