Java – Eclipse : Convertir les concaténations de Chaines de caractères en StringBuilder ou StringBuffer

Java Fast transform of String concatenation into StringBuilder

Hello !

Je suis sûr que toutes les personnes faisant un peu de java ont déjà entendu parler du problème de l’utilisation de la concaténation des chaines de caractères en Java. Il y a déjà plein d’articles qui traitent du sujet sur le net. En voici un par exemple : Concatenation Vs StringBuilder. Je ne sais pas pour vous mais généralement je n’ai pas trop envie de repasser sur toutes les méthodes existantes pour les modifier…

Le but ici n’est pas de faire une n-ième comparaison des performances des différentes méthodes pour construire des chaines des caractères mais plutôt de vous donner un petit tips pour transformer du code existant et contenant des concaténations de chaines de caractères.


Voici un exemple de code qui pose problème :
Une concaténation de chaines de caractères comme on en veut pas

Avec Eclipse on peut transformer cette concaténation assez rapidement. Pour cela :

  1. Sélectionner la chaîne de caractères que l’on veut modifier. Attention : On doit sélectionner uniquement la chaîne de caractères. Si on reprend l’exemple cela donnerai :
    Séléction de la concaténation à modifier
    Noter que je n’ai pas sélectionné les « ; » en fin d’instruction
  2. Appuyer sur les touches CTRL + 1  et sélectionner « Use ‘StringBuilder’ for string concatenation » :
    Quick Fix des concaténations
    Remarque : il faut soit passer en capslock soit utiliser le clavier numérique (CTRL + SHIFT + 1 ne marche pas…)
  3. Le tour est joué, Eclipse modifie le code pour qu’il utilise un StringBuilder plutôt qu’une simple concaténation :
    Une jolie concaténation avec StringBuilder

Deux trois autres  petites remarques tout de même :

Lorsque que vous appliquez l’opération pour transformer la concaténation en StringBuilder, Eclipse présélectionne le nom de l’instance de StringBuilder, si vous la modifiez elle est modifié dans toutes les lignes (au cas ou vous ne voudriez pas que votre variable s’appelle stringBuilder :) )

Vous pouvez également transformer l’objet StringBuilder en StringBuffer. Je ne vais pas détailler la différence mais sachez que la méthode StringBuilder n’est pas synchronisée et peut donc poser problème dans le cas d’un environnement multithreadé.

Enfin, il n’est pas nécessaire d’appliquer ce type de modification sur des concaténation de chaines simples. Par exemple

String myString = "hello" + " beautiful " + "world";

Sera automatiquement convertit en :

String myString = "hello beautiful world"

Par le compilateur.

Voilà, il ne vous reste plus qu’a réparer toutes les erreurs des stagiaires (ou pas d’ailleurs…) :)

Laisser un commentaire

Catégories
Nuage de Tags