建议我为API方法更好的名称

时间:2010-03-02 14:54:54

标签: java oop naming-conventions api-design

简介

我正在开发一个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 ();
}

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

8 个答案:

答案 0 :(得分:11)

boolean isEmptyAlbumAllowed

答案 1 :(得分:2)

public boolean needsDefault;

或更具描述性的

public boolean needsDefaultImg;

EDIT 你应该问自己的另一个问题是,这个属性是否应该暴露出来。如果您希望在所有后端上使管理相册的体验一致,那么您的库可能会在需要时提供默认图像。也许是您应用的徽标。用户不太可能长时间没有空白专辑。

答案 2 :(得分:2)

我会选择

public boolean requiresDefaultImage;

public boolean requiresAlbumImage;

答案 3 :(得分:1)

我会使用allowEmptyAlbum或emptyAlbumPermitted

之类的东西

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

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

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

答案 4 :(得分:1)

我认为你可以通过删除冗余的专辑部分来缩短它。

public boolean canBeEmpty();

答案 5 :(得分:0)

您问题的简短回答:

boolean isDefaultPhotoRequired;

答案越长:默认照片要求不会被所有WebAlbums共享,因此它是使用继承的理想选择。将该行为移动到Flickr特定的子类。你可以做一些事情,比如将该defaultImage的创建添加到Flickr.init()。

答案 6 :(得分:0)

   public boolean requiresInitialPhoto ();

   public boolean doesOnePhotoExist ();

   public boolean needsOnePhoto ();

答案 7 :(得分:0)

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