Предложите мне лучшее имя для метода API - PullRequest
4 голосов
/ 02 марта 2010

Введение

Я работаю над 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 ]

11 голосов
/ 02 марта 2010

boolean isEmptyAlbumAllowed

2 голосов
/ 02 марта 2010

Я бы пошел с

public boolean requiresDefaultImage;

или

public boolean requiresAlbumImage;
2 голосов
/ 02 марта 2010

public boolean needsDefault;

или, более информативно

public boolean needsDefaultImg;

EDIT Еще один вопрос, который вы должны задать себе, если это имущество даже должно быть выставлено. Если вы хотите, чтобы управление альбомами было совместимым на всех серверах, возможно, ваша библиотека может предоставить изображения по умолчанию, где это необходимо. Возможно, логотип для вашего приложения. В любом случае, пользователи вряд ли будут долго иметь пустые альбомы.

1 голос
/ 02 марта 2010

Я думаю, вы можете сделать его еще короче, удалив лишнюю часть альбома.

public boolean canBeEmpty();
1 голос
/ 02 марта 2010

Я бы использовал что-то вроде allowEmptyAlbum или emptyAlbumPermitted

При этом добавление дополнительного метода означает, что пользователь класса должен знать, что это может даже быть проблемой, и не забывать проверять его перед добавлением альбома. Это может быть проблемой, потому что большинство разработчиков «хотят сделать все быстро» и не знают о различиях между сервисами.

Даже добавления примечания в документацию недостаточно, потому что многие люди, вызывающие addAlbum, никогда не будут читать документацию о методе, поскольку это кажется простым (см. Подробности в моем исследовании).

В идеале вы могли бы либо создавать разные фабрики для каждой службы (и предоставлять информацию там), либо, если вам нужно использовать один API, найти способ постепенного отказа или, возможно, добавить изображение-заполнитель.

0 голосов
/ 02 марта 2010

Создание классов FlickerWebAlbum и PicasaWebAlbum. Каждый из них будет представлять поведение, специфичное для каждого поставщика.

0 голосов
/ 02 марта 2010
   public boolean requiresInitialPhoto ();

   public boolean doesOnePhotoExist ();

   public boolean needsOnePhoto ();
0 голосов
/ 02 марта 2010

Краткий ответ на ваш вопрос:

boolean isDefaultPhotoRequired;

Более длинный ответ: требования к фотографиям по умолчанию распространяются не на все веб-альбомы, поэтому они идеально подходят для использования наследования. Переместите это поведение в подкласс Flickr. Вы можете сделать что-то вроде добавления этого изображения по умолчанию к Flickr.init ().

...