4

介绍:

我正在开发一个 API,它提供对 Picasa、Flickr 和其他一些图像服务的访问。

我有一个 WebAlbum 类(它提供对嵌套照片、相册(如果允许)和一些元信息的访问)。

我的 API 不仅允许用户阅读专辑,还允许他们创建新专辑。在一般情况下,为了创建新专辑,API 用户应该使用工厂方法,该方法创建专辑然后调用该方法WebGallery#addAlbum (newAlbum)

但是 Flickr 不允许创建空相册,它需要在任何新相册中至少有一张预定义的照片(可能是为了制作漂亮的相册预览)。在 Flickr 术语中,第一张照片称为Primary Photo. 所以为了给 Flickr 创建一个相册,用户应该使用工厂方法,然后将图像添加到新相册,然后调用WebGallery#addAlbum (newAlbum).

问题:

目前 WebAlbum 类有这个方法

public interface WebAlbum {

   ...

   public boolean requiresPrimaryPhoto ();
}

我不能留下这个名字,因为 PrimaryPhoto 只是一个 Flickr 术语。我可以将其更改为

public interface WebAlbum {

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

   public boolean requiresOneAddedPhotoToCreateNewAlbum ();
}

请建议一个具有相同含义的较短名称。

4

8 回答 8

11

boolean isEmptyAlbumAllowed

于 2010-03-02T14:59:43.663 回答
2

我会去

public boolean requiresDefaultImage;

或者

public boolean requiresAlbumImage;
于 2010-03-02T15:02:50.743 回答
2

public boolean needsDefault;

或者,更具描述性

public boolean needsDefaultImg;

编辑您应该问自己的另一个问题是是否应该公开此属性。如果您想让所有后端的相册管理体验保持一致,那么您的库可能会在需要时提供默认图像。您的应用程序的徽标,也许。无论如何,用户不太可能长时间拥有空相册。

于 2010-03-02T14:57:53.263 回答
1

我会使用类似allowEmptyAlbum 或emptyAlbumPermitted

话虽如此,添加一个额外的方法意味着该类的用户需要知道这甚至可能是一个问题,并记得在添加专辑之前进行检查。这可能是一个问题,因为大多数开发人员“想要快速完成工作”并且不知道服务之间的差异。

即使在文档中添加注释也是不够的,因为许多调用“addAlbum”的人永远不会阅读该方法的文档,因为它看起来很简单(有关详细信息,请参阅我的研究)。

理想情况下,您可以为每个服务创建不同的工厂(并在那里提供信息),或者,如果您必须使用单个 API,找到一种优雅失败的方法,或者添加一个占位符图像。

于 2010-03-02T15:00:30.280 回答
1

我认为您可以通过删除多余的专辑部分来使其更短。

public boolean canBeEmpty();
于 2010-03-02T15:16:40.307 回答
0

对您的问题的简短回答:

boolean isDefaultPhotoRequired;

更长的答案:并非所有 WebAlbums 都共享默认照片要求,因此它是使用继承的完美候选者。将该行为移至 Flickr 特定的子类。您可以执行类似将 defaultImage 的创建添加到 Flickr.init() 的操作。

于 2010-03-02T15:01:33.800 回答
0
   public boolean requiresInitialPhoto ();

   public boolean doesOnePhotoExist ();

   public boolean needsOnePhoto ();
于 2010-03-02T15:04:00.863 回答
0

创建 FlickerWebAlbum 和 PicasaWebAlbum 类。它们中的每一个都将代表特定于每个提供者的行为。

于 2010-03-02T15:05:15.133 回答