Question

Supposons que nous ayons des cours Galerie et l'image. Il peut y avoir beaucoup d'images dans une galerie.

Galerie devrait avoir une méthode qui retourne le nombre d'images imbriquées. Mes suggestions:

int getImagesCount ();

int countImages ();

int imagesCount ();

J'ai vu des exemples de chacun de ces 3 suggestions dans différentes API (bien sûr avec un autre nom ou même sans elle, comme méthode size () dans l'API Collections).

Qu'est-ce que vous préférez et pourquoi? (Un de mes pensées contre countImages () est que ce nom peut faire penser que cette méthode utilisateur fait des calculs complexes.)

Était-ce utile?

La solution

Ma suggestion:

public interface Gallery {

    int getNumberOfImages();

    //...
}

Je suis d'accord que countXX() conduit à l'impression, que l'appel de cette méthode déclenche une sorte de calcul. Donc, je ne l'utiliser ici.

Autres conseils

J'exclurait countImages () aussi, pour la même raison.

Autre que cela, s'il y a une convention d'appellation plus ou moins cohérente dans le Gallery codebase appartient, je vous recommande d'y adhérer. En l'absence d'une convention claire du projet, je serais personnellement pencher vers size().

Si vous envisagez d'avoir une méthode qui renvoie la taille, et un autre qui renvoie le nième élément, ma recommandation en général: Ne pas le faire! Utilisez la puissance de l'api collections : créer une méthode qui retourne une List<Image>. De cette façon, l'utilisateur de l'API peut plus facilement faire des choses comme itérer sur les images (en utilisant la boucle améliorée pour au lieu d'avoir à jongler avec des indices), les trier, en les combinant dans d'autres collections, ...

Il est vraiment facile à mettre en œuvre:

  • Si les images sont déjà en interne représentés comme une liste, vous pouvez simplement revenir que (le cas échéant enveloppé avec Collections.unmodifiableList).
  • Et même si vous ne les stockez pas une liste, les exposant comme List<Image> est aussi facile que d'écrire une petite sous-classe de AbstractList par size() et get(int) juste primordial, les deux méthodes que vous allez mettre en œuvre de toute façon.

Le problème avec size() est que ce n'est pas nécessairement clair si vous retournez le nombre d'éléments (images dans ce cas) ou la taille en octets / kilo-octets / méga-octets de la collection. Pour la même raison, je tendance à préférer getImageDimensions() à getImageSize(). Dans votre cas, j'aime countImages() parce qu'il est clair et concis, mais il ne suit pas les conventions de nommage si par exemple, il existe des méthodes comme getImage(int). Par conséquent, je vais devoir aller avec int getImagesCount() ou mieux, int getNumberOfImages() ou int getNumImages()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top