98 votes

Est-ce que StringUtils.EMPTY est recommandé ?

Utilisez-vous StringUtils.EMPTY au lieu de "" ?

Je veux dire soit comme valeur de retour, soit si vous définissez la valeur d'une variable String. Je ne veux pas dire pour la comparaison, parce que là on utilise StringUtils.isEmpty()

121voto

David Pierre Points 5039

Bien sûr que non. Vous pensez vraiment que "" n'est pas assez clair ?

Les constantes ont essentiellement 3 cas d'utilisation :

  1. Documenter la signification d'une valeur (avec nom de constante + javadoc)
  2. Synchroniser les clients sur une valeur commune.
  3. Fournir un raccourci vers une valeur spéciale pour éviter certains coûts init.

Aucune ne s'applique ici.

38 votes

Je vois toujours un cas d'utilisation mineur et rare pour StringUtils.EMPTY . Cela indique clairement que l'utilisation de la chaîne vide est voulue, et non pas une sorte de paresse ("Oh, ceci nécessite une chaîne, passons la chaîne de caractères "). "" "). Si quelqu'un tombe sur ce morceau de code, il réfléchira à deux fois avant d'apporter des modifications. De même, si StringUtils.EMPTY ont été définis comme votre propre variable, comme MyClass.EMPTY pour apporter des modifications à "cette représentation du vide", il faudrait changer une ligne de code. Vous pourriez, par exemple, le changer en "<empty>" au lieu de la chaîne vide "" . Mais, je pense que cela va un peu trop loin.

5 votes

J'ai enfin un argument sain à faire suivre aux fanatiques, au lieu de penser par moi-même à chaque fois. Merci.

3 votes

En quoi le mot VIDE manque-t-il de sens ? EMPTY satisfait à la fois les points 1 et 2 de votre liste. Les développeurs expérimentés sous-estiment gravement le potentiel des développeurs juniors à gâcher quelque chose d'aussi simple que l'utilisation de "".

69voto

codevour Points 3246

J'utilise StringUtils.EMPTY pour cacher le littéral et aussi pour exprimer que return StringUtils.EMPTY était pleinement attendu et devrait retourner une chaîne vide, "" peut conduire à l'hypothèse que "" peut être facilement changé en autre chose et que ce n'était peut-être qu'une erreur. Je pense que le EMPTY est plus expressif.

39 votes

Comme d'autres l'ont suggéré : utilisez-vous également ZERO pour 0 et ONE pour 1 ?

9 votes

Je ne comparerais pas le cas spécial "vide" à l'utilisation du littéral entier.

18 votes

Je trouve StringUtils.EMPTY moins plus expressif que "" .

31voto

Erick Robertson Points 12958

Non, utilisez simplement "" .

Le littéral "" est clair comme du cristal. Il n'y a aucun malentendu sur ce qui a été dit. Je ne vois pas pourquoi vous auriez besoin d'une constante de classe pour cela. Je ne peux que supposer que cette constante est utilisée dans l'ensemble du paquet qui contient StringUtils au lieu de "" . Cela ne signifie pas pour autant que vous devez l'utiliser.

S'il y a une pierre sur le trottoir, tu n'as pas besoin de la jeter.

18voto

Matthieu Points 1603

Je vais ajouter mes deux cents ici parce que je ne vois personne parler de String stage et l'initialisation des classes :

  • Tous String dans les sources Java sont internées, ce qui rend les tout "" et StringUtils.EMPTY le site même objet
  • Utilisation de StringUtils.EMPTY peut initialiser StringUtils car elle accède à son membre statique EMPTY seulement s'il n'est pas déclaré final (le JLS est précis sur ce point). Cependant, org.apache.commons.lang3.StringUtils.EMPTY est final, donc il n'initialisera pas la classe.

Voir un réponse à la question "String interning et sur Initialisation de la classe en se référant à la JLS 12.4.1 .

18voto

j__m Points 5167

Je suis étonné de voir combien de personnes sont heureuses de supposer aveuglément que "" est effectivement une chaîne vide, et ne contient pas (accidentellement ?) l'un des merveilleux caractères invisibles et non espacés d'Unicode. Pour l'amour de tout ce qui est bon et décent, utilisez EMPTY chaque fois que vous le pouvez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X