171 votes

Quand le nom d'une méthode Java est-il trop long ?

Au cours des dernières semaines, j'ai vu des personnes utiliser des noms très longs pour une méthode ou une classe (50 caractères), généralement sous prétexte d'améliorer la lisibilité, mon opinion est qu'un nom long comme celui-ci est un indicateur que nous essayons d'en faire beaucoup ou trop dans une méthode ou une classe si nous avons besoin d'un nom aussi long, mais je voulais savoir ce que vous en pensez.

Voici un exemple :

getNumberOfSkinCareEligibleItemsWithinTransaction

394voto

JaredPar Points 333733

Un nom en java, ou dans tout autre langage, est trop long lorsqu'il existe un nom plus court qui traduit également le comportement de la méthode.

201voto

flybywire Points 36050

Quelques techniques pour réduire la longueur des noms de méthodes :

  1. Si l'ensemble de votre programme, de votre cours ou de votre module porte sur les "articles de soins de la peau", vous pouvez laisser tomber les soins de la peau. Par exemple, si votre classe s'appelle SkinCareUtils , qui vous amène à getNumberOfEligibleItemsWithinTransaction

  2. Vous pouvez modifier sur à sur , getNumberOfEligibleItemsInTransaction

  3. Vous pouvez changer Transaction en Tx, ce qui vous amène à getNumberOfEligibleItemsInTx .

  4. Ou si la méthode accepte un paramètre de type Transaction vous pouvez abandonner complètement l'InTx : getNumberOfEligibleItems

  5. Vous changez numberOf par count : getEligibleItemsCount

C'est très raisonnable. Et il est 60% plus court.

182voto

Mark Byers Points 318575

Juste pour changer, une réponse non subjective : 65536 caractères.

A.java:1 : la représentation UTF8 de la chaîne "xxxxxxxxxxxxxxxxxxxx..." est trop longue pour le pool de constantes

;-)

41voto

Epaga Points 12717

Je suis d'accord avec tout le monde : les noms des méthodes ne doivent pas être trop longs. Je voudrais cependant ajouter une exception :

Les noms des méthodes de test JUnit peuvent toutefois être longs et doivent ressembler à des phrases.

Pourquoi ?

  • Parce qu'ils ne sont pas appelés dans d'autres codes.
  • Parce qu'ils sont utilisés comme noms de test.
  • Parce qu'ils peuvent alors être écrits comme des phrases décrivant des exigences. (Par exemple, en utilisant AgileDox )

Exemple :

    @Test
    public void testDialogClosesDownWhenTheRedButtonIsPressedTwice() {
        ...
    }

Voir " Conception axée sur le comportement "pour plus d'informations sur cette idée.

17voto

S.Lott Points 207588

Le contexte "...WithinTransaction" devrait être évident. C'est le principe de l'orientation objet.

La méthode fait partie d'une classe. Si la classe ne signifie pas "Transaction" - et si elle ne vous évite pas de devoir dire "WithinTransaction" tout le temps, alors vous avez des problèmes.

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