Соглашения об именах: как назвать метод, возвращающий логическое значение?

У меня есть интерфейс в С#, который помогает извлекать данные из пользовательского архива на сервере. Интерфейс выглядит так:

public interface IRetrieveData
{
    bool OkToRetrieve(SomeData data); // Method in question...
    bool RetrieveToLocal(SomeData data);
}

Этот интерфейс реализуется клиентами, которые извлекают данные в локальную базу данных. Существуют разные варианты клиентов, которые имеют доступ к данным друг друга. Таким образом, когда компонент обработки вызывает IRetrieveData.OkToRetrieve непосредственно перед фактическим извлечением, вызов переходит к клиентскому коду, где принимается решение о том, следует ли получать данные или нет.

В этот момент клиент может вернуть значение false, и этот фрагмент данных пропускается или вернуть значение true, а компонент обработки вызывает RetrieveToLocal и отправляет данные клиенту, который затем обрабатывает их.

Я не совсем понимаю, переименовать ли метод OkToRetrieve в Retrieve или CanRetrieve или оставить его в OkToRetrieve.

У кого-нибудь есть предложения?

Ответ 1

IsRetrievable()

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

Ответ 2

Allways называют логические методы с именами, похожими на вопросы, на которые можно ответить Да или Нет.

В вашем случае CanRetrieve будет хорошим именем (просто для использования вашего собственного предложения).

Ответ 3

Как использовать префикс "должен"?

ShouldRetrieve(SomeData data);

Ответ 4

Методы означают действие. Поэтому я предпочитаю имена методов, начинающиеся с глагола. Как насчет?

CheckIsRetrievable(SomeData data)

Ответ 5

В этом конкретном случае я бы назвал его:

public bool IsReady (SomeData)

Потому что это более ясно демонстрирует, что произойдет, как только это вернет true.

Ответ 6

Зависит от вашего прецедента. Мне нравится префикс их словами типа "is", "does" или "Can": IsSomePropertySoAndSo, DoesNounSupportFeature и в качестве примера CanVerb

Ответ 7

CanRetrieve отлично звучит для меня. Я видел стержень Can, используемый в API Microsoft. Единственный реальный вариант IMO IsRetRievable (от Aziz), который почему-то кажется слишком лингвистически искаженным!

Ответ 8

если вы делаете больше проверок и isRetrievable() не подходит, вы можете использовать:

IsValid()

Ответ 9

Я бы предпочел isOKToRetrieve или isRetrieveOK над вариантами без "есть" в соответствии с соглашением о том, что функции и методы должны быть глаголами.

Ответ 10

MayRetrieve() может быть лучшим именем, если результат определяется разрешением пользователя/доступом.

IsRetrievable() является более двусмысленным, что может быть более уместным, если есть другие соображения в дополнение к разрешению или иным образом.

Ответ 11

В соглашениях об именах написано, что имя метода должно быть глаголом

Ответ 12

Как правило, методы/функции указывают действия, поэтому они должны начинаться с глаголов. например, проверить, получить, сделать и т.д.

Общепринятым соглашением по именованию для логических переменных является добавление к ним префиксов с помощью вспомогательных глаголов, например is, has, will, can

Я бы подумал, что комбинация двух конвенций приведет к довольно хорошей, проницательной схеме. Так что getIsRetreivable() или checkIsRetrievable() выглядели бы мне очень хорошо.