Question

Introduction:

Je travaille sur une API qui permet d'accéder à Picasa, Flickr et d'autres services d'image.

J'ai un WebAlbum de classe (il donne accès aux photos imbriquées, albums si cela est autorisé, et une méta-informations).

Mon API permet à l'utilisateur de lire non seulement des albums, mais elle leur permet aussi de créer de nouveaux albums. Dans le cas général, afin de créer un nouvel album, l'utilisateur API doit utiliser une méthode d'usine, ce qui crée un album, puis appeler la méthode WebGallery#addAlbum (newAlbum).

Mais Flickr ne permet pas la création d'albums vides, il faut au moins une photo prédéfinie dans un nouvel album (pour faire aperçu de l'album agréable probablement). En ce qui concerne Flickr cette première photo est appelée Primary Photo. Ainsi, afin de créer un album Flickr, l'utilisateur doit utiliser une méthode de fabrication, puis ajoutez une image au nouvel album, puis appelez WebGallery#addAlbum (newAlbum).

Problème:

A la classe WebAlbum moment a cette méthode

public interface WebAlbum {

   ...

   public boolean requiresPrimaryPhoto ();
}

Je ne peux pas quitter ce nom parce PrimaryPhoto est juste un terme Flickr. Je peux changer à

public interface WebAlbum {

   ...
   //with spaces: requires one added photo to create new album

   public boolean requiresOneAddedPhotoToCreateNewAlbum ();
}

S'il vous plaît suggérer un nom plus court qui a le même sens.

Était-ce utile?

La solution

boolean isEmptyAlbumAllowed

Autres conseils

public boolean needsDefault;

ou, plus descriptif

public boolean needsDefaultImg;

EDIT Une autre question que vous devez vous poser est de savoir si cette propriété même devrait être exposé. Si vous voulez faire l'expérience de la gestion des albums cohérente sur tous les backends, alors peut-être votre bibliothèque pourrait fournir des images par défaut, si nécessaire. Un logo pour votre application, peut-être. Les utilisateurs sont peu susceptibles d'avoir des albums vides très longtemps de toute façon.

Je voudrais aller avec

public boolean requiresDefaultImage;

ou

public boolean requiresAlbumImage;

Je voudrais utiliser quelque chose comme allowsEmptyAlbum ou emptyAlbumPermitted

Cela étant dit, en ajoutant une méthode supplémentaire signifie que l'utilisateur de la classe a besoin de savoir que cela pourrait même être un problème et souvenez-vous de faire la vérification avant d'ajouter l'album. Cela pourrait être un problème parce que la plupart des développeurs « veulent faire avancer les choses rapidement » et ne connaîtrait pas les différences entre les services.

Même en ajoutant une note dans la documentation ne suffit pas parce que beaucoup de gens appeler « addAlbum » serait jamais lu la documentation de la méthode, car il semble simple (voir mes recherches pour plus de détails).

Idéalement, vous soit en mesure de créer des usines différentes pour chaque service (et fournir les informations là-bas), ou, si vous devez utiliser une API simple, trouver un moyen de ne pas grâce ou en ajoutant peut-être une image d'espace réservé.

Je pense que vous pouvez le rendre encore plus court en supprimant la partie de l'album redondant.

public boolean canBeEmpty();
   public boolean requiresInitialPhoto ();

   public boolean doesOnePhotoExist ();

   public boolean needsOnePhoto ();

Créer des classes FlickerWebAlbum et PicasaWebAlbum. Chacun d'entre eux représente un comportement spécifique à chaque fournisseur.

La réponse à votre question:

boolean isDefaultPhotoRequired;

La réponse plus longue: l'exigence de photo par défaut est pas partagée par tous WebAlbums, il est donc un candidat idéal pour l'utilisation de l'héritage. Déplacer ce comportement à une sous-classe spécifique Flickr. Vous pouvez faire quelque chose comme ajouter la création de cette defaultImage à un Flickr.init ().

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