Static, cet ami qui peut vous faire autant de bien que de mal
Ce n’est un secret pour personne, static
(ou friend
en vb.net) est un outil puissant. On le retrouve dans nombre de guides de bonnes pratiques. On oublie cependant très vite que celui-ci peut créer autant de problèmes qu’il en résout.
Le bon
Côté bonne pratique : static
doit être appliqué à une méthode à partir du moment où celle-ci n’a pas besoin d’accéder à des variables d’instances.
L’usage de méthodes et classes statiques permet de réduire l’instanciation d’objets inutiles. Pour toute personne cherchant à obtenir un code très performant, static est très efficace.
C’est pourquoi les classes statiques sont souvent utilisées pour créer des Helpers et éviter la duplication de code.
La brute
Les variables statiques sont souvent utilisées pour résoudre rapidement un problème de partage d’informations ou pour garder en cache celles-ci (exemples : des paramètres applicatifs, des chaines de connexion).
Cet usage est à proscrire. Il conduit inévitablement à une problématique grave : on ne connait pas les dépendances d’une classe. Ce qui conduit rapidement à la création d’un code spaghetti. Il devient alors très difficile de faire évoluer un code, de le refactoriser ou de découpler les classes.
Le truand
Le Singleton est le faux ami par excellence. Évidemment, il représente le même problème que celui des variables statiques vu qu’il utilise une variable statique. Mais étant donné qu’il s’agit d’un Pattern reconnu, il est considéré comme étant une bonne pratique.
Attention à limiter son usage. Plus il y a de types de Singleton, plus il est compliqué de gérer les références et les dépendances.
Un singleton, ça va, trois singletons, bonjour les dégâts!
Conclusion
L’usage de méthodes statiques s’avère intéressant pour obtenir de bonnes performances en éviter la duplication de code. Il faut rester vigilant pour tout autre usage.
Concernant le Singleton, un bon usage consiste à employer celui-ci pour créer l’hôte en charge de l’injection de dépendances. Ainsi on dispose d’un objet unique qui résout pour nous tous les problèmes de dépendances que l’on aurait tendance à créer en utilisant trop d’éléments statiques.