Что такое хорошее соглашение о присвоении имен для методов, которые принимают условные меры?

Скажем, у меня есть метод, Foo(). Существуют только определенные времена когда Foo() является соответствующим, как определено методом ShouldFooNow(). Однако существуют много раз, когда программа должна рассмотреть если Foo() является соответствующим в это время. Таким образом вместо записи:

if ShouldFooNow():
   Foo()

везде, я просто превращаю это в одну функцию:

def __name():
    if ShouldFooNow():
       Foo()

Каково было бы хорошее название этого метода? Мне приходится нелегко придумывающий хорошую конвенцию. IfNecessaryFoo() является неловким, особенно если Foo() имеет более длинное имя. DoFooIfShould()? Еще более неловкий.

Каков был бы лучший стиль имени?

23
задан Nick Heiner 1 July 2010 в 17:36
поделиться

3 ответа

Думаю, вы довольно близки. Поместите действие / намерение в начало имени метода, чтобы упростить поиск по алфавиту. Если бы я писал что-то подобное, я бы рассмотрел

FooIfNecessary()
FooIfRequired()

Скажем, например,

ElevatePermissionsIfNecessary()
19
ответ дан 29 November 2019 в 02:57
поделиться

Недавно я начал использовать соглашение:

FooIf(args, bool);

Где args - это любые аргументы, которые принимает метод, а bool либо ожидает логическое значение, либо какой-то Func, который разрешается в логическое . Затем в этом методе я проверяю логическое значение и запускаю логику. Сводит такие утверждения к одной строчке и кажется мне чистым.

Пример в моем коде C # для ведения журнала:

public void WarnIf<T>(T value, string message, Func<T, bool> isTrue)
{
  if (isTrue(value)) _log.Warn(message);
}

Тогда я бы назвал его примерно так:

WarnIf(someObject, "This is a warning message to be logged.", s => s.SomeCondition == true);

(Этот вызывающий может быть неправильным, но вы понимаете ... У меня нет кода в прямо сейчас передо мной.)

1
ответ дан 29 November 2019 в 02:57
поделиться

Можно использовать EnsureFoo().

Например, метод EnsurePermissions() при необходимости предпримет соответствующие действия. Если разрешения уже верны, метод ничего не сделает.

0
ответ дан 29 November 2019 в 02:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: