Ça dépend. Il existe vraiment 2 types de méthodes statiques:
- Des méthodes statiques parce qu'elles PEUVENT
- Méthodes qui sont statiques parce qu'elles DOIVENT l'être
Dans une base de code de taille petite à moyenne, vous pouvez vraiment traiter les deux méthodes de manière interchangeable.
Si vous avez une méthode qui appartient à la première catégorie (peut être statique) et que vous devez la modifier pour accéder à l'état de la classe, il est relativement simple de déterminer s'il est possible de transformer la méthode statique en méthode d'instance.
Dans une grande base de code, cependant, le grand nombre de sites d'appels peut rendre la recherche pour voir s'il est possible de convertir une méthode statique en une méthode non statique trop coûteuse. Plusieurs fois, les gens verront le nombre d'appels et diront "ok ... je ferais mieux de ne pas changer cette méthode, mais d'en créer une nouvelle qui fasse ce dont j'ai besoin".
Cela peut entraîner soit:
- Beaucoup de duplication de code
- Une explosion du nombre d'arguments de méthode
Ces deux choses sont mauvaises.
Donc, mon conseil serait que si vous avez une base de code de plus de 200K LOC, je ne rendrais les méthodes statiques que si ce sont des méthodes incontournables.
La refactorisation de non-statique à statique est relativement facile (ajoutez simplement un mot-clé), donc si vous voulez transformer un can-be-static en une véritable statique plus tard (lorsque vous avez besoin de ses fonctionnalités en dehors d'une instance), vous pouvez le faire. Cependant, le refactoring inverse, transformer un can-be-static en une méthode d'instance est BEAUCOUP plus cher.
Avec de grandes bases de code, il vaut mieux se tromper du côté de la facilité d'extension, plutôt que du côté de la pureté idéologique.
Donc, pour les grands projets, ne rendez pas les choses statiques à moins que vous n'en ayez besoin. Pour les petits projets, faites ce que vous préférez.